我有一个asp.net核心应用程序。我使用azure devops任务运行发布:
dotnet restore
dotnet build
最后
dotnet publish --configuration $(BuildConfiguration) --output
$(build.artifactstagingdirectory)
工件可以是zip文件,也可以不是。
工件的结果是所有dll,web.config,...
好,那是构建的一部分。
现在,我要执行relase部分并部署到IIS暂存和IIS生产。
我在文档中看到,推荐使用Web部署https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#deploy-the-app
但是:
:
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
</environmentVariables>
用于登台和
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>
用于生产 (请注意,我不能使用env变量,因为在某些环境下服务器可以相同)
那么,我该如何正确发布?
答案 0 :(得分:0)
我不确定它是否正确,但是我的build.yml看起来像这样
steps:
- task: DotNetCoreInstaller@0
displayName: 'Use .NET Core sdk 2.2.203'
inputs:
version: 2.2.203
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
vstsFeed: '--IHAVE_CUSTOM_FEED'
- script: dotnet publish -c Release -r win-x64 --self-contained true
displayName: 'dotnet build web'
workingDirectory: Source/Web
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: 'Source/Web/bin/Release/netcoreapp2.2/win-x64/publish'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/Web.zip'
replaceExistingArchive: false
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: Release'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: Release
condition: succeededOrFailed()
因此,作为工件,我将获得我的Web项目的zip,然后在发行版中,我将使用“ Azure App Service Deploy”将我的zip部署到应用程序服务中
PS。您询问是否需要两次构建。是,如果仅针对Windows,则针对不同的OS,则为否。如果仅使用一次,则仅构建一次(仅发布),如果正在使用,则甚至从webconfig中删除environmentVariables。然后在每个服务器上设置ASPNETCORE_ENVIRONMENT
环境变量。因此,当您测试具有相同的内部版本时,您将实现这一目标。在启动时,您将阅读appconfig。{env} .config取决于您部署的服务器。