GitLab CI/CD 基本用法指南
GitLab CI/CD 基本用法指南一、流水线触发方式GitLab CI/CD 流水线可以通过多种方式触发常见的触发方式如下触发方式$CI_PIPELINE_SOURCE的值说明代码推送Pushpush向仓库推送代码时自动触发合并请求MRmerge_request_event创建或更新合并请求时触发网页手动触发web在 GitLab 网页上点击“Run Pipeline”按钮触发定时触发schedule通过 CI/CD Schedules 定时任务触发API 触发api通过 GitLab API 调用触发上游流水线触发pipeline由另一个项目的流水线触发跨项目父子流水线触发parent_pipeline由同一项目内的父流水线触发二、workflow: rules— 控制流水线是否创建workflow: rules是顶层配置用于控制整条流水线是否被创建。支持的when值when值含义always创建流水线默认值可省略never不创建流水线⚠️注意when: manual不能用在workflow: rules里流水线只有创建和不创建两种状态没有手动创建这个概念。写法一白名单模式推荐用于严格管控明确列出允许的情况其他一律拒绝workflow:rules:# 只在手动触发时创建流水线-if:$CI_PIPELINE_SOURCE web# 其他情况一律不创建-when:never效果只有通过网页手动点击 “Run Pipeline” 才能创建流水线代码推送、MR 等都不会触发。写法二黑名单模式推荐用于灵活放行明确列出排除的情况其他默认允许workflow:rules:# 草稿提交不触发-if:$CI_COMMIT_MESSAGE ~ /-draft$/when:never# 定时任务不触发-if:$CI_PIPELINE_SOURCE schedulewhen:never# MR 事件不触发-if:$CI_PIPELINE_SOURCE merge_request_eventwhen:never# 其他情况都允许-when:always效果除了上面列出的三种情况外其他所有触发方式都会创建流水线。如何选择场景推荐模式只允许少数特定方式触发✅白名单模式列出允许项 when: never兜底默认允许只排除少数情况✅黑名单模式列出排除项 when: always兜底三、job: rules— 控制单个 Job 是否运行rules也可以写在单个 job内部用于控制该 job 是否执行、如何执行。支持的when值when值含义on_success前置 stage 成功时运行默认值on_failure前置 stage 失败时运行always无论如何都运行never不运行manual需要手动点击才运行仅 job 级别支持delayed延迟一段时间后运行示例仅在主分支上自动部署其他分支手动部署deploy-job:stage:deployscript:-echo Deploying...rules:-if:$CI_COMMIT_BRANCH mainwhen:on_success# 主分支前置阶段成功后自动运行-when:manual# 其他分支需要手动点击触发四、workflow: rulesvsjob: rules核心差异对比项workflow: rulesjob: rules作用范围整条流水线单个 Job控制的是什么流水线是否创建Job 是否执行支持when: manual❌ 不支持✅ 支持支持when: delayed❌ 不支持✅ 支持支持when: on_success❌ 不支持✅ 支持支持when: on_failure❌ 不支持✅ 支持支持when: always✅ 支持✅ 支持支持when: never✅ 支持✅ 支持执行顺序触发事件 → workflow: rules 判断是否创建流水线 ↓ (创建) 各 job 的 rules 判断各自是否执行 ↓ 按 stage 顺序执行匹配到的 job一句话总结workflow: rules是门卫决定流水线能不能进来job: rules是岗位分配决定每个人干不干活。五、常用预定义变量变量说明$CI_PIPELINE_SOURCE流水线触发方式push、web、schedule等$CI_COMMIT_BRANCH当前提交所在分支名$CI_COMMIT_TAG当前提交的 Tag 名如果是 Tag 触发$CI_COMMIT_MESSAGE提交信息$CI_MERGE_REQUEST_SOURCE_BRANCH_NAMEMR 的源分支名$CI_MERGE_REQUEST_TARGET_BRANCH_NAMEMR 的目标分支名六、完整示例# 控制流水线创建规则仅手动触发workflow:rules:-if:$CI_PIPELINE_SOURCE web-when:neverstages:-build-test-deploybuild-job:stage:buildtags:-windows-builderscript:-echo Compiling the code...-echo Compile complete.unit-test-job:stage:testtags:-windows-builderscript:-echo Running unit tests...-echo Code coverage is 90%deploy-job:stage:deployenvironment:productiontags:-windows-builderscript:-echo Deploying application...-echo Application successfully deployed.参考链接GitLab CI/CD YAML 语法参考workflow: rules 文档预定义变量列表
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2420847.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!