Я создал многоступенчатый конвейер на основе yaml в Azure DevOps.
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». После запуска конвейера в пользовательском интерфейсе для этой среды отображается развертывание. Тем не менее, в этой среде страницы Изменения и Рабочие элементы пусты. Я подтвердил, что есть новые изменения, которые ранее не были внедрены в эту среду. Почему?
Обратите внимание, что этап развертывания на самом деле ничего не делает. Мы осуществляем фактическое развертывание вручную, но надеемся отслеживать изменения в среде с помощью DevOps. Кроме того, мы не определили никаких ресурсов для окружающей среды. Я не смог найти ничего о том, что для отслеживания коммитов и рабочих элементов требуется определенный ресурс.
ОБНОВЛЕНИЕ 1
В соответствии с предложением Per @ Leo-Liu-MSFT ниже, я обновил трубопровод к публикации sh артефакт. Обратите внимание, что сборка выполняется на агенте с собственным размещением. Тем не менее, я все еще не получаю никаких результатов в Изменениях среды и Рабочих элементах.
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 Hosted Agent. Обратите внимание, что у меня действительно есть проблема, описанная здесь , поэтому я настроил задачу развертывания так, как я делал с «download: none». Я все еще не получаю никаких изменений или рабочих элементов в среде.
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)'
FINAL UPDATE
Вот рабочий 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)