Я использую инструменты NX для управления монорепозиторием с несколькими приложениями, и я изо всех сил пытаюсь понять, как развертывать с помощью Azure и выпускать конвейеры.
Отказ от ответственности : Я новичок в Azure и DevOps в целом.
Я понимаю следующее: я создаю конвейер (не конвейер выпуска, а просто «обычный», если это имеет смысл ) и подключите к нему yml. Кроме того, конвейер связан с репо на Azure Repos, что означает, что каждый раз, когда я подключаюсь к этому репо sh, он запускает конвейер и запускает команды yaml. С помощью этих команд я запускаю lint, test и builds.
Это то, что я могу сделать и могу понять, следующее становится более неясным :
Сборка выполняется должен создать артефакт, если я использую / объединяю мастер, который я могу обусловить. Теперь я могу создать конвейер выпуска, который будет запускаться, когда репо, с которым он связан, создаст артефакт. Этот конвейер выпуска может затем отправить этот артефакт в службу приложения, которая является слотом, в котором будет жить приложение.
Хорошо, но я использую монорепозицию, что означает, что сборка будет создавать несколько приложений, и каждое из эти приложения должны быть развернуты в правильной службе приложений.
После некоторых исследований, я обнаружил, что общая идея состоит в том, чтобы создать один конвейер выпуска для каждого приложения. Все эти конвейеры выпуска связаны с одним и тем же монорепозиторием, но у них есть фильтр, который является тегом сборки. Тег сборки добавляется при сборке приложений с использованием файла yml.
Итак, это в основном мое понимание всего этого. Теперь вот вопросы:
- Что такое тег сборки и где он находится? Это как-то связано с артефактом?
- Идея состоит в том, чтобы создать один тег сборки для каждого артефакта, верно?
- Мне не удалось создать тег сборки, как мне это сделать?
Как правильно заархивировать и опубликовать sh артефакты?
Вот yaml, который я использую:
jobs:
- job: Lint
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.x'
displayName: 'Install Node.js'
- task: Npm@1
displayName: 'Npm install'
- pwsh: 'npm run nx affected -- --target=lint --parallel --base=origin/master --maxParallel=4'
displayName: 'Running lint'
- job: Test
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.x'
displayName: 'Install Node.js'
- task: Npm@1
displayName: 'npm install'
- pwsh: 'npm run nx affected -- --target=test --parallel --code-coverage --base=origin/master --maxParallel=4'
displayName: 'Running tests'
- job: Build
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.x'
displayName: 'Install Node.js'
- task: Npm@1
displayName: 'npm install'
- pwsh: 'npm run nx affected -- --target=build --parallel --base=origin/master --prod'
displayName: 'Running build'
- pwsh: |
npm run nx affected:apps -- --base=HEAD~1 --head=HEAD | grep -E '( - )(\w|-|\d|_)+' | sed -E 's/ - /##vso[build.addbuildtag]/g'
displayName: 'Adding build tags'
При запуске работают тест, lint и сборки, но я не думаю, что он добавляет тег сборки, вот журнал:
Похоже, что ничего не происходит ... Как я могу правильно добавить тег и запустить конвейер выпуска?
Я также нашел этот фрагмент, чтобы заархивировать и опубликовать sh артефакт, но я не знаю, могу ли я его использовать, поскольку в монорепозитории мы должны - я думаю - создавать несколько артефактов.
5) Итак, последний вопрос: как я могу создать несколько артефактов и хорошо ли это делать?
Заранее большое спасибо за помощь, я знаю, что это длинный скучный пост и помогать новичку может быть скучно, но я застрял в этом надолго ...