Как обмениваться файлами между заданиями - PullRequest
0 голосов
/ 30 октября 2019

Возможно ли для двух заданий совместно использовать файлы в многоступенчатых конвейерных сборках? Publish этап имеет dotnet publish задание (отдельное задание) и publish artifacts задание (отдельное задание). Однако вывод из dotnet publish, по-видимому, недоступен для publish artifacts.

1 Ответ

0 голосов
/ 31 октября 2019

Если каждое из двух заданий имеет одну задачу, а вторая задача использует выходные данные первой задачи. Так почему бы не запустить их под одним и тем же заданием.

Ниже вы можете обратиться к yaml

  stages: 
  - stage: Publish
    displayName: 'Publish stage'
    jobs:
    - job: dotnetpublishartifacts
      pool:
        vmImage: 'windows-latest'
      steps:
      - task: DotNetCoreCLI@2
        displayName: 'dotnet publish'
        inputs:
          command: publish
          projects: '**/*.csproj'
          arguments: '-o $(build.artifactstagingdirectory)'
          publishWebProjects: false 

      - task: PublishBuildArtifacts@1
        displayName: 'Publish Artifact: drop'
        inputs:
          PathtoPublish: '$(build.artifactstagingdirectory)'

Если две задачи должны быть в разных заданиях. И задания выполняются на том же агенте . Затем вы можете попробовать сделать вывод задачи публикации dotnet в папку, которая не будет очищена следующим заданием (так как задание агента очистит build.artifactstagingdirectory предыдущего задания),

В следующем примере задача публикации dotnetвывод на $(Agent.BuildDirectory)\firtjobpublish, эта папка не будет очищена при выполнении следующего задания.

Возможно, вам придется нажать на 3dots справа от угла страницы редактирования конвейера yaml,нажмите Триггеры , перейдите к YAML и в разделе Получить источники установите Очистите до false . enter image description here

Ниже yaml, например:

 jobs:
    - job: dotnetpublishartifacts
      pool: Default
      steps:
      - task: DotNetCoreCLI@2
        displayName: 'dotnet publish'
        inputs: 
          command: publish
          projects: '**/*.csproj'
          arguments: '-o $(Agent.BuildDirectory)\firtjobpublish'
          publishWebProjects: false 

    - job: publishartifacts
      dependsOn: dotnetpublishartifacts
      pool: Default  
      steps:
        - task: PublishBuildArtifacts@1
          displayName: 'Publish Artifact: drop'
          inputs:
            PathtoPublish: '$(Agent.BuildDirectory)\firtjobpublish'

Addtion : для совместного использования файлов между заданиями, если задания запущенына разных агентах можно попытаться добавить задачу опубликовать артефакты в первое задание для публикации артефактов на сервере Azure. А в следующем задании добавьте задачу загрузки артефактов , чтобы загрузить артефакты, опубликованные в предыдущем задании. Этот метод, по-видимому, не для вашего случая.

Надеюсь, вы найдете это полезным!

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