当前位置:首页 > 技术 > 正文内容

GitLab Runner管道配置解析

访客 技术 2026年6月13日 1

本地离线文档部署

=

docker run -it -d -p 8080:8080 registry.gitlab.com/gitlab-org/gitlab-docs:latest  #使用最新版本镜像
访问:http://{IP}:8080/latest/ee/ci/yaml/README.html  <br></br>

.gitlab-ci.yml 在线参考文档:https://docs.gitlab.com/ee/ci/yaml/

1.管道语法验证流程

进入项目后,访问CI/CD模块的Pipeline页面,选择CI配置选项

输入配置内容,点击校验按钮

2.作业配置规范

每个项目通过.gitlab-ci.yml文件定义CI/CD流程。

配置中包含多个任务单元,每个任务执行独立命令。命令可为shell脚本或可执行程序


任务需满足:
- 唯一名称(非保留字)
- 独立执行
- 至少包含一个执行指令<br></br>

示例

task_a:
  command: "execute-task-a"

task_b:
  command: "execute-task-b"

3.执行指令配置

定义具体操作命令或脚本

示例

job_config:
  command:
    - os_info
    - run_tests


**注意:** 包含特殊符号的指令需用引号包裹。例如包含冒号的命令需要引号保护,避免YAML解析错误。处理特殊字符时需注意:: { } [ ] , & * # ? | - < > = ! % @ 

4.前置执行指令

定义任务前执行的初始化命令,必须为数组格式。该指令会与主命令合并执行

示例

pre_commands:
  - echo "初始化操作"

5.后置执行指令

定义任务完成后执行的清理命令,必须为数组格式。该指令在独立shell中执行

pre_commands:
  - echo "初始化操作"

env_vars:
  SITE_DOMAIN: example.org

pipeline_stages:
  - build
  - release
 

build_stage:
  pre_commands:
    - echo "构建前操作"
  stage: build
  command:
    - echo "编译项目"
    - echo "打包应用"
  post_commands:
    - echo "构建后处理"


release_stage:
  stage: release
  command:
    - echo "部署环境"
    
post_commands:
  - echo "全局清理"

注意

后置指令执行失败不影响任务状态。
前置指令失败会导致任务终止,后续任务不再执行。

6.阶段配置

定义任务执行顺序,全局配置。同阶段任务并行执行,不同阶段按顺序进行

pipeline_stages:
  - compile
  - verification
  - delivery

该配置表示:首先并行执行编译阶段,接着并行执行验证阶段,最后并行执行交付阶段。任一阶段失败将导致整体状态失败。

7.预处理与后处理阶段

.pre阶段作为管道首个执行单元,.post阶段作为最后一个执行单元。用户定义阶段位于两者之间。顺序不可更改。若仅包含预处理或后处理阶段,管道不会创建。

8.阶段关联配置

通过stage字段关联任务到特定阶段,依赖全局阶段定义。同阶段任务可并行执行

unit_tests:
  stage: verification
  command:
    - execute_tests
    
api_checks:
  stage: verification
  command:
    - run_api_tests

可能遇到的问题:阶段未并行执行。需调整runner并发数。默认值为1,建议修改为10

vim /etc/gitlab-runner/config.toml 修改后自动生效
concurrent = 10

9.变量配置

定义不同层级变量:管道变量、任务变量、Runner变量。任务变量优先级最高

综合示例

pre_tasks:                 #任务前执行指令
  - echo "初始化操作"

env_vars:                     #环境变量定义
  APP_DOMAIN: example.org
  
pipeline_stages:        #执行顺序定义
  - build
  - test
  - scan
  - deploy

build_job:
  pre_tasks:          #任务前执行指令
    - echo "构建前操作"
  stage: build  #根据阶段定义优先执行
  command:
    - echo "编译项目"
    - echo "构建应用"
    - echo "$APP_DOMAIN"
  post_tasks: #任务后执行指令
    - echo "构建后处理"

test_job:
  stage: test
  command:
    - echo "运行测试"

deploy_job:
  stage: deploy
  command:
    - echo "部署应用"
    - sleep 2;
  
scan_job:
  stage: scan
  command:
    - echo "代码扫描"
    - sleep 5;
 
post_tasks:  #任务后执行指令
  - echo "全局清理"

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。