use*_*695 5 git merge gitlab gitlab-ci
我不太确定 gitlab CI 工作流程应该如何实现这一点:
我想用 gitlab CI 做什么:
grunt bump执行概括
所以 grunt bump应该只在 master 上并且在成功的测试和合并之后执行。仅对于生成的提交(Release vx.xx),应该完成构建和部署工作...
也许有一个比这个想法更聪明的工作流程。基本上我想在合并和成功测试后增加版本值并标记提交......
我对 YAML 文件的尝试
stages:
- test
- build
- deploy
lint:
image: testing:latest
stage: test
tags:
- testing
script:
- /node_modules/.bin/eslint --ext .js --ext .jsx .
bump:
stage: build
tags:
- deploy
script:
- grunt bump
only:
- master
- /^Merge .*$/
build:
stage: build
tags:
- deploy
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:latest .
- docker push $CI_REGISTRY_IMAGE:latest
only:
- master
- tags
- /^Release .*$/
production:
stage: deploy
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker pull $CI_REGISTRY_IMAGE:latest
- cd /home/ubuntu
- docker-compose up -d
only:
- master
- tags
- /^Release .*$/
Run Code Online (Sandbox Code Playgroud)
可以only/except根据预定义的 gitlab 变量执行作业$CI_COMMIT_MESSAGE。请参阅gitlab ci 参考。还要检查有关如何处理变量表达式的文档。
commit_message_has_release_job:
only:
variables:
- $CI_COMMIT_MESSAGE =~ /^Release .*$/
[...]
Run Code Online (Sandbox Code Playgroud)
也可以过滤merge_requests。
merge_request_job:
only:
- merge_requests
[...]
Run Code Online (Sandbox Code Playgroud)
将多个情况组合在一起only/except可能不会像您期望的那样工作。该列表不适用于AND,但是OR。此外,也不能 100% 确定前导only后跟except如您预期的那样工作。所以一个简单的解决方法是这样的:
merge_reqeuest_to_master_job:
only:
- merge_requests
before_script:
- if [[ $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master" ]]; exit 0 ; fi
Run Code Online (Sandbox Code Playgroud)
由于变量$CI_MERGE_REQUEST_TARGET_BRANCH_NAME刚刚设置,如果管道用于合并请求,您可以这样做:
merge_reqeuest_to_master_job:
only:
variables:
- $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
Run Code Online (Sandbox Code Playgroud)
但是,自 12.0 起实现了“CI 变量表达式连接/分离”功能。
merge_reqeuest_to_master_job:
only:
- merge_requests
Run Code Online (Sandbox Code Playgroud)
对您的其他评论:
allow_failure: true或when: on_failure)| 归档时间: |
|
| 查看次数: |
6134 次 |
| 最近记录: |