gitlab-ci - 不同分支的多个阶段的作业

gitlab-ci - jobs with multiple stages for different branches

关注 Szenario。 我有 1 个生产分支和 2 个开发分支,它们应该使用不同的环境变量进行部署

- prod
- dev1
- dev2

我想将部署分成两个不同的阶段

- build
- deploy

如何配置gitlab-ci文件,为每个分支存储脚本和阶段?

我尝试了几种方法,但没有得到有效的工作 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

是否有可能以这种方式拆分乔布斯?

我找到了解决办法。 只需为每个环境添加一个 Job。

 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