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
关注 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