gitlab-ci - задания с несколькими этапами для разных отраслей - PullRequest
0 голосов
/ 16 апреля 2019

После Сценарио.У меня есть 1 производственная и 2 ветки разработки, которые должны быть развернуты с разными переменными среды

- prod
- dev1
- dev2

Я хочу разделить развертывание на 2 разных этапа

- build
- deploy

Как настроитьфайл gitlab-ci, для хранения сценариев и этапов для каждой ветви?

Я пробовал несколько вещей, но не получил действующий рабочий файл.

 stages:
 - build
 - deploy

 variables:
 IMAGE: my_image

 # Production
 prod:
   stage: build
   script:
   - docker build -t $IMAGE --build-arg RAILS_ENV=production .
   only:
   - prod

   stage: deploy
   script:
   - docker push $IMAGE
   - docker run -e "some production relevated env vars"
   only:
   - prod

 # Development 1
 dev1:
   stage: build
   script:
   - docker build -t $IMAGE --build-arg RAILS_ENV=staging .
   only:
   - dev1

   stage: deploy
   script:
   - docker push $IMAGE
   - docker run -e "some dev1 relevated env vars"
   only:
   - dev1

 # Development 2
 dev2:
   stage: build
   script:
   - docker build -t $IMAGE --build-arg RAILS_ENV=staging .
   only:
   - dev2

   stage: deploy
   script:
   - docker push $IMAGE
   - docker run -e "some dev2 relevated env vars"
   only:
   - dev2

Есть ли возможностьРазбить работу таким образом?

1 Ответ

0 голосов
/ 17 апреля 2019

Я нашел решение. Просто добавьте вакансию для каждой среды.

 stages:
 - build
 - deploy

 variables:
 IMAGE: my_image

 # Production
 prod-build:
   stage: build
   script:
   - docker build -t $IMAGE --build-arg RAILS_ENV=production .
   only:
   - prod

 prod-deploy:
   stage: deploy
   script:
   - docker push $IMAGE
   - docker run -e "some production relevated env vars"
   only:
   - prod

 # Development 1
 dev1-build:
   stage: build
   script:
   - docker build -t $IMAGE --build-arg RAILS_ENV=staging .
   only:
   - dev1

 dev2-deploy:
   stage: deploy
   script:
   - docker push $IMAGE
   - docker run -e "some dev1 relevated env vars"
   only:
   - dev1

 # Development 2
 dev2-build:
   stage: build
   script:
   - docker build -t $IMAGE --build-arg RAILS_ENV=staging .
   only:
   - dev2

 dev2-deploy:
   stage: deploy
   script:
   - docker push $IMAGE
   - docker run -e "some dev2 relevated env vars"
   only:
   - dev2
...