Azure devops 为什么在多阶段Azure Devops管道中的环境下,更改和工作项页面是空的?
我在Azure DevOps中创建了一个基于yaml的多阶段管道Azure devops 为什么在多阶段Azure Devops管道中的环境下,更改和工作项页面是空的?,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我在Azure DevOps中创建了一个基于yaml的多阶段管道 variables: versionPrefix: '7.1.0.' versionRevision: $[counter(variables['versionPrefix'], 100)] version: $[format('{0}{1}',variables['versionPrefix'],variables['versionRevision'])] solution: '**/product.sln'
variables:
versionPrefix: '7.1.0.'
versionRevision: $[counter(variables['versionPrefix'], 100)]
version: $[format('{0}{1}',variables['versionPrefix'],variables['versionRevision'])]
solution: '**/product.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Debug'
name: $(version)_$(Date:yyyyMMdd)$(Rev:.r)
stages:
- stage: Build
pool: Default
jobs:
- job: Build
displayName: Build
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VersionAssemblies@2
displayName: Version Assemblies
inputs:
Path: '$(Build.SourcesDirectory)'
VersionNumber: '$(version)'
InjectVersion: true
FilenamePattern: 'AssemblyInfo.*'
OutputVersion: 'OutputedVersion'
- task: VSBuild@1
displayName: Build product
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
maximumCpuCount: true
- stage: Deploy
dependsOn: Build
pool: Default
jobs:
- deployment: Deployment
displayName: DeployA
environment: 7-1-0
strategy:
runOnce:
deploy:
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Deployed"
如上所示,管道包括一个引用名为“7-1-0”的环境的部署阶段。管道运行后,将在该环境的UI中显示部署。但是,在这种环境下,更改和工作项页面都是空的。我确认有以前未部署到此环境的新更改。为什么?
请注意,部署阶段实际上没有做任何事情。我们正在手动进行实际部署,但希望通过DevOps跟踪环境的变化。此外,我们还没有为环境定义任何资源。我找不到任何声明需要定义资源以跟踪提交和工作项的内容
- download: none
更新1
根据下面@Leo Liu MSFT的建议,我更新了管道以发布一个工件。请注意,构建在自托管代理上运行。然而,在环境变化和工作项目方面,我仍然没有得到任何结果
variables:
versionPrefix: '7.1.0.'
versionRevision: $[counter(variables['versionPrefix'], 100)]
version: $[format('{0}{1}',variables['versionPrefix'],variables['versionRevision'])]
solution: '**/product.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Debug'
name: $(version)_$(Date:yyyyMMdd)$(Rev:.r)
stages:
- stage: Build
pool: Default
jobs:
- job: Build
displayName: Build
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VersionAssemblies@2
displayName: Version Assemblies
inputs:
Path: '$(Build.SourcesDirectory)'
VersionNumber: '$(version)'
InjectVersion: true
FilenamePattern: 'AssemblyInfo.*'
OutputVersion: 'OutputedVersion'
- task: VSBuild@1
displayName: Build product
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
maximumCpuCount: true
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
New-Item -Path '$(build.artifactstagingdirectory)' -Name "testfile1.txt" -ItemType "file" -Value "Hello, DevOps!" -force
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'FilePath'
TargetPath: 'C:\a\p\\$(Build.DefinitionName)\\$(Build.BuildNumber)'
- stage: Deploy
dependsOn: Build
pool: Default
jobs:
- deployment: Deployment
displayName: DeployA
environment: 7-1-0
strategy:
runOnce:
deploy:
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Deployed"
更新2
根据@Leo Liu MSFT的后续建议,我创建了以下内容,试图将工件发布到Azure。我还将yaml简化为使用Microsoft托管代理。注意,我确实描述了这个问题,这就是为什么我像“下载:无”那样配置部署任务。我仍然没有在环境中得到任何改变或工作项
variables:
ArtifactName: drop
stages:
- stage: Build
jobs:
- job: Build
displayName: Build
pool:
vmImage: ubuntu-latest
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)/Build'
targetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
ArtifactName: $(ArtifactName)
- stage: Deploy
dependsOn: Build
pool:
vmImage: ubuntu-latest
jobs:
- deployment: Deployment
displayName: DeployA
environment: 7-1-0
strategy:
runOnce:
deploy:
steps:
- download: none
- task: DownloadBuildArtifacts@0
inputs:
artifactName: $(ArtifactName)
buildType: 'current'
downloadType: 'single'
downloadPath: '$(System.ArtifactsDirectory)'
最后更新
这是正在工作的YAML。最后一个技巧是将下载设置为当前,并指定工件名称
variables:
ArtifactName: drop
stages:
- stage: Build
jobs:
- job: Build
displayName: Build
pool:
vmImage: ubuntu-latest
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)/Build'
targetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
ArtifactName: $(ArtifactName)
- stage: Deploy
dependsOn: Build
pool:
vmImage: ubuntu-latest
jobs:
- deployment: Deployment
displayName: DeployA
environment: 7-1-0
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: $(ArtifactName)
为什么在多阶段Azure Devops管道中的环境下,更改和工作项页面是空的
您需要添加任务以将构建构件发布到Azure管道
Azure devops通过REST API跟踪更改和工作项,然后Azure devops通过传输文件将此信息传递给其他环境
因此,我们需要将工件发布到Azure管道,以便部署阶段在获取源代码时能够获取这些信息
作为测试,我只是在构建阶段添加复制任务和发布构建工件任务,如:
stages:
- stage: Build
jobs:
- job: Build
displayName: Build
pool:
vmImage: ubuntu-latest
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)'
targetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
- stage: Deploy
dependsOn: Build
pool:
vmImage: ubuntu-latest
jobs:
- deployment: Deployment
displayName: DeployA
environment: 7-1-0
strategy:
runOnce:
deploy:
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host "Deployed"
结果是:
更新:
我不得不做一些更新来处理下载的问题
人工制品仍然没有在服务器上获得任何更改或工作项
环境我非常感谢你的帮助
这是因为禁用内置下载任务而不是使用DownloadBuildArtifacts任务,该任务没有获取提交和工作项的功能
- download: none
您需要在YAML中删除以上内容。当我测试更新的YAML时,没有下载:无,它工作正常
希望这能有所帮助。什么东西作为工件发布重要吗,或者它可以是任何东西吗?此外,我正在使用自托管代理,并将工件发布到本地文件夹。那有关系吗?@bk不过,它可以是任何东西。自托管代理也可以正常工作。您可以通过一个简单的示例来测试它,祝您愉快:。我创建了一个示例,并用它更新了我的问题。感觉我遗漏了一些明显的内容。@但是,我担心我们无法将其设置在本地文件夹中,必须将生成工件发布到Azure管道。非常抱歉,我在您以前的评论中忽略了此问题。请参阅我问题中的更新2。我试图使我的YAML尽可能接近您发布的样本。我不得不做一些更新来处理下载工件的问题。仍然没有在环境上获得任何更改或工作项。我非常感谢你的帮助!