Почему страницы «Изменения» и «Рабочие элементы» пусты в среде «Среда» в многоступенчатом трубопроводе Devops? 1000 *? - PullRequest
0 голосов
/ 30 марта 2020

Я создал многоступенчатый конвейер на основе 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)

1 Ответ

1 голос
/ 31 марта 2020

Почему страницы с изменениями и рабочими элементами пусты в среде в многоступенчатой ​​Azure Пиплайне Devops?

Вам необходимо добавить publi sh build Artifacts задача публикации sh сборка артефактов в Azure конвейерах.

Azure devops отслеживает изменения и рабочие элементы через REST API, затем Azure devops передает эту информацию в другие среды путем передачи файлов .

Итак, нам нужно опубликовать sh артефакт на Azure конвейерах, чтобы этап развертывания мог получить эту информацию при получении источника.

В качестве теста я просто добавьте задачу копирования и опубликуйте sh задачу создания артефакта на этапе сборки, например:

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"

Результат:

enter image description here

Обновление:

Мне пришлось сделать несколько обновлений, чтобы решить проблему с загрузкой артефакта. Все еще не получаю никаких изменений или рабочих элементов в среде. Я очень ценю вашу помощь!

Это потому, что вы отключаете встроенную задачу загрузки вместо использования задачи DownloadBuildArtifacts, которая не имеет функции для извлечения коммитов. и рабочие элементы.

- download: none

Вы должны удалить выше в YAML. Когда я тестирую ваш обновленный YAML без - download: none, он работает нормально.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...