Azure devops 使用策略不适用于任何人AzureRmWebAppDeployment@4
我开始使用strategy runonce yaml模式,这样我就可以将环境标记添加到我的relase中,并添加批准步骤 但这样做AzureRmWebAppDeployment@4步骤:按以下格式部署whol文件 /site/wwwroot/mywebApi/Content/D_C/a/1/s/src/mywebApi/obj/Release/Package/PackageTmp/ 而不是将包解压缩到/site/wwwroot/mywebApi/ 在我没有使用策略的时候,这种方法曾经奏效 这曾经奏效Azure devops 使用策略不适用于任何人AzureRmWebAppDeployment@4,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,我开始使用strategy runonce yaml模式,这样我就可以将环境标记添加到我的relase中,并添加批准步骤 但这样做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/
而不是做一些库杜拷贝到
/site/wwwroot/mywebApi/Content/D_C/a/1/s/src/mywebApi/obj/Release/Package/PackageTmp/我能够重现同样的场景。不幸的是,我没有找到通过配置任务AzureRmWebAppDeployment来修复它的方法。该任务似乎自动使用kudu将文件复制到Azure应用程序服务,而msdeploy用于在非策略管道中部署文件。你可以报告这个问题 我通过更改vsbuild任务的msbuild参数并添加zip存档任务找到了解决方法。检查以下内容: 使用
/t:publish
将生成发布到$(build.artifactstagindirectory)\publish
文件夹中,以压缩到归档文件
任务中
- 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
使用PublishBuildArtifacts
task发布由上述步骤创建的zip文件
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)\\package\\'
artifactName: 'strategy'
通过以上步骤,在部署阶段下载的zip文件将只包含已部署的代码
希望以上步骤对您有所帮助