Объедините результаты нескольких конвейерных заданий в azure пакет веб-приложения - PullRequest
1 голос
/ 14 апреля 2020

Мы находимся в процессе перевода нашего продукта в azure веб-приложение. У нас есть обширный существующий конвейер, содержащий несколько параллельных заданий. Одно из этих заданий компилирует веб-приложение asp. net. Некоторые другие составляют сайт vue. js. В настоящее время результаты веб-приложения и проектов vue объединяются на отдельном этапе с использованием сценария powershell.

Теперь я могу преобразовать шаг publi sh веб-приложения для создания пакета развертывания для azure. Но каков наилучший способ добавления выходных данных vue в этот пакет, чтобы я мог правильно развернуть его на azure, не теряя параллельные задания? Я не могу включить выходные файлы is в мой проект, потому что они не существуют в задании на сборку веб-приложения

Ответы [ 2 ]

3 голосов
/ 15 апреля 2020

Вы можете использовать задачу сборки артефакта publi sh для загрузки результатов сборки веб-приложения и vue проектов на сервер azure devops, как упоминалось @Krzysztof. И вы можете добавить новое задание для загрузки артефактов.

Пожалуйста, проверьте ниже простой пример в yaml.

Чтобы объединить результаты сборки, вы можете использовать извлечь файл задача , чтобы извлечь сжатые артефакты и опубликовать распакованные артефакты в задании Build_web . А в задании Объединить вы можете использовать Копировать файл задачи , чтобы скопировать результаты vue артефактов в папку веб-артефактов. И затем вы можете использовать задачу архивного файла , чтобы упаковать артефакты, которые теперь содержат результаты веб-приложения и vue приложения.

Объединить задание должно зависит от Build_web и Build_ vue заданий

  jobs:
  - job: Build_Web
    pool: 
      vmImage: "windows-latest"
    steps:
    - task: ExtractFiles@1
      inputs:
        archiveFilePatterns: '*.zip'
        destinationFolder: '$(Build.ArtifactStagingDirectory)\unzip'
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)\unzip'
        artifactName: webapp

  - job: Build_Vue
    pool:  
      vmImage: "windows-latest"
    steps:

    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: 'path to the build results'
        artifactName: vueapp

  - job: Combine
    dependsOn:
    - Build_Web
    - Build_Vue
    pool:  
      vmImage: "windows-latest"
      steps:
      - task: DownloadBuildArtifacts@0
        inputs:
          buildType: 'current'
          artifactName: webapp
          downloadPath: "$(System.ArtifactsDirectory)"

      - task: DownloadBuildArtifacts@0
        inputs:
          buildType: 'current'
          artifactName: vueapp
          downloadPath: "$(System.ArtifactsDirectory)"

      - task: CopyFiles@2
        inputs:
          SourceFolder: '$(System.ArtifactsDirectory)\vueapp'
          TargetFolder: 'path to web application result folder'  #eg. $(System.ArtifactsDirectory)\webapp\Content\d_C\a\1\s\AboutSite\AboutSite\obj\Release\netcoreapp2.0\PubTmp\Out\

      - task: ArchiveFiles@2
        inputs:
          rootFolderOrFile: $(System.ArtifactsDirectory)\webapp
          archiveType: 'zip'
          archiveFile: '$(Build.ArtifactStagingDirectory)/webapplication.zip' 

Приведенный выше пример показывает только общую идею. Вы также можете переместить задачу ExtractFile в Объединить задание. В любом случае вам придется использовать задачу извлечения файла, копирования файла и файла архива.

Для параметра TargetFolder в задаче копирования файла вы можете проверить журнал загрузочных артефактов сборки для артефакта веб-приложения, чтобы получить полный путь. Например, как показано на скриншоте ниже.

enter image description here

0 голосов
/ 14 апреля 2020

Вы можете использовать PublishPipelineArtifact@1 для создания артефактов для своих проектов, а затем в отдельном задании DownloadPipelineArtifact@2. Определив путь, вы можете составить свой конечный артефакт (если это смешение многих проектов не сложнее, чем поместить один в другой). И опубликуйте sh ваш артефакт как артефакт сборки или конвейера в зависимости от того, как вы организовали релиз.

# Download an artifact named 'WebApp' to 'bin' in $(Build.SourcesDirectory)
- task: DownloadPipelineArtifact@2
  inputs:
    artifact: 'WebApp'
    path: $(Build.SourcesDirectory)/bin

Здесь у вас есть больше информации о публикации и загрузке артефактов.

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