microsoft - porta azure
Implementar en Azure Web App desde varios repositorios (1)
De acuerdo con su descripción, puede crear su propio archivo .deployment y deploy.cmd para clonar primero las bibliotecas comunes segunda y tercera de los repositorios github en la carpeta de la aplicación web y luego usar el comando msbuild para compilarlo.
Aviso: No se pudo clonar el segundo y tercer repositorio de github en el directorio de artefactos. Debido a que tienes 3 repositorios github separados, cada repositorio tiene su propio archivo .git. No podríamos combinar estos tres. Así que sugiero que primero puedas clonar el segundo y tercer repositorio en una nueva carpeta y usar msbuild para compilarlo.
Más detalles, puede consultar los siguientes pasos:
En primer lugar, sugiero que pueda descargar el script de despliegue desde la consola de KUDU.
Aviso: después de que ya se haya desplegado desde el git, este archivo podría descargarse. Utilizamos este archivo como ejemplo para agregar códigos. Si no tiene, podría seguir mi deployment.cmd. Recuerde cambiar el nombre del proyecto.
Como a continuación:
Abre Kudu.
Descargue la secuencia de comandos de implementación.
Luego podría cambiar para encontrar que contiene el archivo .deployment y deploy.cmd.
Agregue los códigos siguientes al archivo deploy.cmd y agregue estos dos archivos en su carpeta git para enviarlos.
git clone https://github.com/{yourgithubname}/BrandoGitTestLibrary.git D:/home/site/{foldername}
echo second project
:: 1. Start restore second project
dotnet restore "D:/home/site/{foldername}/BrandoGitTestLibrary/BrandoGitTestLibrary.csproj"
:: 2. Build to DEPLOYMENT_TEMP wait copy
dotnet build "D:/home/site/{foldername}/BrandoGitTestLibrary/BrandoGitTestLibrary.csproj" --output "%DEPLOYMENT_TEMP%"
Este código se usa para construir su biblioteca común a la espera de la carpeta temporal para copiar.
Después de que se publique el sitio web principal, copiará la tempfolder al wwwrot.
El archivo deploy.cmd total.
Aviso: Este ejemplo solo crea dos repositorios. Si desea construir y publicar 3 repositorios, solo necesita agregar los códigos para clonar nuevamente.
git clone https://github.com/BrandoTest/BrandoGitTestLibrary.git D:/home/site/sencondproject
echo second project
:: 3. Start restore second project
dotnet restore "D:/home/site/sencondproject/BrandoGitTestLibrary/BrandoGitTestLibrary.csproj"
:: 4. Build and publish
dotnet build "D:/home/site/sencondproject/BrandoGitTestLibrary/BrandoGitTestLibrary.csproj" --output "%DEPLOYMENT_TEMP%"
@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off
:: ----------------------
:: KUDU Deployment Script
:: Version: 1.0.15
:: ----------------------
:: Prerequisites
:: -------------
:: Verify node.js installed
where node 2>nul >nul
IF %ERRORLEVEL% NEQ 0 (
echo Missing node.js executable, please install node.js, if already installed make sure it can be reached from current environment.
goto error
)
:: Setup
:: -----
setlocal enabledelayedexpansion
SET ARTIFACTS=%~dp0%../artifacts
IF NOT DEFINED DEPLOYMENT_SOURCE (
SET DEPLOYMENT_SOURCE=%~dp0%.
)
IF NOT DEFINED DEPLOYMENT_TARGET (
SET DEPLOYMENT_TARGET=%ARTIFACTS%/wwwroot
)
IF NOT DEFINED NEXT_MANIFEST_PATH (
SET NEXT_MANIFEST_PATH=%ARTIFACTS%/manifest
IF NOT DEFINED PREVIOUS_MANIFEST_PATH (
SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%/manifest
)
)
IF NOT DEFINED KUDU_SYNC_CMD (
:: Install kudu sync
echo Installing Kudu Sync
call npm install kudusync -g --silent
IF !ERRORLEVEL! NEQ 0 goto error
:: Locally just running "kuduSync" would also work
SET KUDU_SYNC_CMD=%appdata%/npm/kuduSync.cmd
)
IF NOT DEFINED DEPLOYMENT_TEMP (
SET DEPLOYMENT_TEMP=%temp%/___deployTemp%random%
SET CLEAN_LOCAL_DEPLOYMENT_TEMP=true
)
IF DEFINED CLEAN_LOCAL_DEPLOYMENT_TEMP (
IF EXIST "%DEPLOYMENT_TEMP%" rd /s /q "%DEPLOYMENT_TEMP%"
mkdir "%DEPLOYMENT_TEMP%"
)
IF DEFINED MSBUILD_PATH goto MsbuildPathDefined
SET MSBUILD_PATH=%ProgramFiles(x86)%/MSBuild/14.0/Bin/MSBuild.exe
:MsbuildPathDefined
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Deployment
:: ----------
echo Handling ASP.NET Core Web Application deployment.
:: 1. Restore nuget packages
call :ExecuteCmd dotnet restore "%DEPLOYMENT_SOURCE%/TestForCore2.csproj"
IF !ERRORLEVEL! NEQ 0 goto error
:: 2. Build and publish
call :ExecuteCmd dotnet publish "%DEPLOYMENT_SOURCE%/TestForCore2.csproj" --output "%DEPLOYMENT_TEMP%" --configuration Release
IF !ERRORLEVEL! NEQ 0 goto error
:: 5. KuduSync
call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_TEMP%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd"
IF !ERRORLEVEL! NEQ 0 goto error
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
goto end
:: Execute command routine that will echo out when error
:ExecuteCmd
setlocal
set _CMD_=%*
call %_CMD_%
if "%ERRORLEVEL%" NEQ "0" echo Failed exitCode=%ERRORLEVEL%, command=%_CMD_%
exit /b %ERRORLEVEL%
:error
endlocal
echo An error has occurred during web site deployment.
call :exitSetErrorLevel
call :exitFromFunction 2>nul
:exitSetErrorLevel
exit /b 1
:exitFromFunction
()
:end
endlocal
echo Finished successfully.
Resultado:
Buscando una forma de implementar en una aplicación web azul desde 3 repositorios github separados. Uno de los repositorios es el sitio web principal, los otros dos son bibliotecas comunes utilizadas por otros proyectos. Queremos que la implementación descienda de los tres repositorios a un directorio de artefactos, ejecute msbuild y copie los artefactos a wwwroot.
Supongo que necesitaré un archivo de despliegue personalizado junto con un archivo por lotes kudu. Pero no puedo encontrar ejemplos sobre cómo desplegar desde múltiples repositorios de github.
editar: ortografía