我开始使用策略runonce yaml模式,因此可以将环境标签添加到发布中并添加批准步骤。 https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema
这样做,AzureRmWebAppDeployment @ 4步骤以以下格式部署whol文件
/ site / wwwroot / mywebApi / Content / D_C / a / 1 / s / src / mywebApi / obj / Release / Package / PackageTmp /
而不是将软件包解压缩到/ site / wwwroot / mywebApi /
这在我不使用策略时就可以工作
这曾经有用
jobs:
- job: Deploy
variables:
vmImage: 'windows-latest'
pool:
vmImage: $(vmImage)
displayName: 'Deploy ${{ parameters.project }} ${{ parameters.envName }}'
continueOnError: "false"
steps:
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: '${{ parameters.project }}${{ parameters.envName }}'
downloadPath: '$(build.artifactStagingDirectory)'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '****Azure'
appType: 'webApp'
WebAppName: '${{ parameters.webAppName }}'
deployToSlotOrASE: true
ResourceGroupName: '****'
SlotName: '${{ parameters.slotName }}'
VirtualApplication: '${{ parameters.virtualApplication }}'
packageForLinux: '$(build.artifactStagingDirectory)/**/*.zip'
这行不通,但这是我要使用环境标记发布的内容
jobs:
# track deployments on the environment
- deployment: DeployWeb
displayName: deploy paystub Web App
environment: ${{ parameters.envName }}
variables:
vmImage: 'windows-latest'
pool:
vmImage: $(vmImage)
continueOnError: "false"
strategy:
runOnce:
deploy:
steps:
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: '${{ parameters.project }}${{ parameters.envName }}'
downloadPath: '$(build.artifactStagingDirectory)'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '***Azure'
appType: 'webApp'
WebAppName: '${{ parameters.webAppName }}'
deployToSlotOrASE: true
ResourceGroupName: '*****'
SlotName: '${{ parameters.slotName }}'
VirtualApplication: '${{ parameters.virtualApplication }}'
packageForLinux: '$(build.artifactStagingDirectory)/**/*.zip'
我希望新步骤还将代码部署到 这个文件夹 打包到/ site / wwwroot / mywebApi /
而不是对
进行一些kudu复制/ site / wwwroot / mywebApi / Content / D_C / a / 1 / s / src / mywebApi / obj / Release / Package / PackageTmp /
答案 0 :(得分:0)
我能够重现相同的情况。不幸的是,我没有找到通过配置任务AzureRmWebAppDeployment来解决此问题的方法。该任务似乎自动使用kudu将文件复制到Azure App服务,而msdeploy用于将文件部署在非策略管道中。您可以报告此问题here。
我找到了解决方法,方法是更改vsbuild任务的msbuild参数,并添加一个zip存档任务。检查以下内容:
使用clkpredict
[]
list_info[0]= ('clkpredict')
IndexError: list assignment index out of range
将内部版本发布到/t: publish
文件夹中,以便在$(build.artifactstagingdirectory)\publish
任务中进行压缩。
ArchiveFiles
使用- task: VSBuild@1
displayName: 'Build solution **\*.sln'
inputs:
msbuildArgs: '/t:publish /p:outputpath="$(build.artifactstagingdirectory)\\"'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
clean: true
restoreNugetPackages: true
任务从上述步骤压缩archiveFiles
文件夹中的所有文件。
\publish
使用 - task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.ArtifactStagingDirectory)\\publish\\*'
includeRootFolder: true
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/package/$(Build.BuildId).zip'
replaceExistingArchive: true
任务发布通过上述步骤创建的zip文件
PublishBuildArtifacts
通过上述步骤,在Deploy阶段下载的zip文件将仅包含已部署的代码。
希望以上步骤对您有所帮助。