Как связать результат сборки "простого приложения React" / узла с конвейером выпуска - PullRequest
0 голосов
/ 26 января 2019

Чтобы попытаться сделать его более коротким, у меня есть приложение React, построенное на Azure DevOps Build Pipeline, например

trigger:
  - Release

queue:
  name: Hosted
  demands: npm

steps:
  - task: NodeTool@0
    inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
  npm ci
  npm run build
  displayName: 'Do npm ci and build'

Это делает то же самое, что и сборка. Локально результаты сборки отправляются в каталог build (разархивированный).

Теперь, когда я пытаюсь создать конвейер выпуска, нет артефакта, который можно найти с помощью задачи Azure Deploy Web Service.

Если я попытаюсь добавить PublishPipelineArtifact @ 0 в конвейер сборки для создания публикации, редактор YAML просто скажет строка не соответствует шаблону ... и не позволяет сохранить определение.

Полагаю, мне следует архивировать содержимое сгенерированного каталога build, но что будет правильным? Кроме того, правильно ли использовать задачу Azure App Service Deploy для развертывания Azure WebApp? Он работает для приложений ASP.NET Core, поэтому находит артефакт удаления кода (в архиве) и развертывает его.

- task: PublishPipelineArtifact@0
  inputs:
  artifactName: 'drop'
  targetPath: '$(Build.ArtifactStagingDirectory)/build'

На самом деле может быть сохранен и запустить сборку. Хотя это ошибки с

2019-01-25T22: 42: 27.6896518Z ## [раздел] Начало: PublishPipelineArtifact 2019-01-25T22: 42: 27.6898909Z ================================================== =========================== 2019-01-25T22: 42: 27.6898962Z Задача: Опубликовать артефакт конвейера 2019-01-25T22: 42: 27.6899006Z Описание: Опубликовать артефакт конвейера 2019-01-25T22: 42: 27.6899034Z Версия: 0.139.0 2019-01-25T22: 42: 27.6899062Z Автор: Microsoft Corporation 2019-01-25T22: 42: 27.6899090Z Справка: опубликовать локальный каталог или файл в качестве именованного артефакта для текущего конвейера. 2019-01-25T22: 42: 27.6899137Z ================================================== ============================ 2019-01-25T22: 42: 28.0499917Z ## [ошибка] Путь не существует: D: \ а \ 1 \ а \ сборки 2019-01-25T22: 42: 28.0708878Z ## [раздел] Отделка: PublishPipelineArtifact

/build делает свое дело. Чувствует себя немного странно, так как это то, что производится на месте. Он не создает zip-файл, ожидаемый заданием выпуска, а именно - развертывание службы приложений Azure.

Рассмотрим эту проблему позже сегодня (здесь два часа ночи).

1 Ответ

0 голосов
/ 26 января 2019

Была еще одна проблема: скрипт выполнял только npm ci и не выполнял сборку.Разделение на два разных шага имело значение.Похоже, PublishPipelineArtifact@0 в этом случае не является идеальным вариантом, если бы я хотел, чтобы результаты были заархивированы в промежуточную область.

В настоящее время рабочим решением является

resources:
- repo: self

trigger:
- Release

queue:
  name: Hosted
  demands: npm

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
    displayName: 'Install Node.js'

- script: |
  npm ci    
  displayName: 'npm ci'

- script: |
  npm run build
  displayName: 'npm run build'

- task: ArchiveFiles@2
  displayName: 'Archive files'
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)/build'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/artifact.zip'
    replaceExistingArchive: true


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

Может быть, это можно упростить, но пока работает и гибко, похоже.

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