# #gitlab #yaml #gitlab-ci #gitlab-ci-runner
Вопрос:
У меня есть вариант использования Gitlab-CI, который я не могу правильно понять. Предыстория заключается в том, что у меня есть несколько сред, в которых необходимо создавать и развертывать свои собственные артефакты. Допустим, упрощенный случай выглядит так:
stages:
- build
- deploy
AppOne:Build:
extends: .build
environment:
name: AppOne
AppOne:Deploy:
extends: .deploy
needs: ['AppOne:Build']
environment:
name: AppOne
AppTwo:Build:
extends: .build
environment:
name: AppTwo
AppTwo:Deploy:
extends: .deploy
needs: ['AppTwo:Build']
environment:
name: AppTwo
.build:
stage: build
script:
- build.sh
.deploy:
stage: deploy
when: manual
script:
- deploy.sh
Описанный выше процесс работает, но, как вы можете видеть, он довольно долгий и повторяющийся с двумя приложениями и очень простым процессом. Реальный процесс состоит из трех этапов и до 20 приложений. Я хотел бы знать, есть ли лучший способ выразить это? Процессы сборки идентичны, за исключением переменной (заданной в среде).
Я думаю, что в основном я хочу знать, есть ли лучший способ выразить «потребности», не повторяя его для каждого приложения, т. Е. Приложение необходимо создать, прежде чем его можно будет развернуть вручную. Я мог бы это сделать needs: ['${NAME}:Build']
, но для этого требуется $NAME:Build
, чтобы шаг действительно существовал.
Пожалуйста, помогите, о коллективная мудрость Интернета.
Комментарии:
1. Находятся ли приложения каждое в своем собственном репозитории git? Или все они находятся в одном и том же репо?
2. @AdamMarshall, Они в одном репо.
3. Для этого есть открытая проблема, gitlab.com/gitlab-org/gitlab/-/issues/254821 , который, к сожалению, в настоящее время все еще ОТКРЫТ…