Gitlab CI Linter

Polar Sponsor
爱发电 赞助
.NET 9.0

对 GitLab CI/CD 管道YAML 文件(.gitlab-ci.yml)进行语法校验、检测安全问题和废弃模式,并提供最佳实践建议。

GitLab CI Linter.

功能概述

GitLab CI Linter.是一项面向实际任务的技能,主要用于Lint GitLab CI/CD 管道文件用于语法错误,安全问题,失常模式,以及最佳做法的违反.Commands.;All commands.;

核心要点

  • All commands us the bunded Python profile at。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

GitLab CI Linter

对 GitLab CI/CD 流水线文件进行语法错误、安全问题、已弃用模式及违背最佳实践等问题的检查。

命令

所有命令均调用内置 Python 脚本 scripts/gitlab_ci_linter.py。

1. 检查流水线文件

python3 scripts/gitlab_ci_linter.py lint <文件或目录> [--strict] [--format text|json|markdown]

对一个或多个 .gitlab-ci.yml 文件运行全部 lint 规则。若传入目录,则递归扫描所有 *.yml 和 *.yaml 文件。

参数说明:

  • --strict —— 遇到任意警告(不仅限于错误)即返回退出码 1
  • --format —— 输出格式:text(默认)、json、markdown

2. 安全性审计

python3 scripts/gitlab_ci_linter.py security <文件> [--format text|json|markdown]

聚焦于安全性问题:硬编码密钥(如密码、Token、密钥)、未受保护的变量、特权 runner、使用不安全的 Docker 镜像标签(例如 :latest)、设置了 allow_failure 的安全相关 job。

3. 检查 stages

python3 scripts/gitlab_ci_linter.py stages <文件> [--format text|json|markdown]

列出已定义的 stages 及各 stage 所关联的 jobs,并标出未定义或未被使用的 stage。

4. 验证流水线结构

python3 scripts/gitlab_ci_linter.py validate <文件> [--format text|json|markdown]

仅做结构验证:检查必需字段是否存在、stage 是否正确定义、job 关键字是否合法、依赖图是否成环(如 needs: 循环引用)、是否存在缺失的 ref 引用等。

Lint 规则(共 24 条)

语法与结构(8 条)

  1. missing-stages —— 缺少 stages: 定义
  2. undefined-stage —— job 使用了未在 stages: 列表中声明的 stage
  3. empty-job —— job 中无 script: 区块
  4. invalid-job-name —— job 名称以 . 开头,但并未作为模板使用
  5. missing-script —— job 缺少 script:、before_script: 或 trigger:
  6. circular-needs —— needs: 依赖图中存在循环引用
  7. duplicate-job —— 存在重复的 job 名称(YAML 解析器会将其合并)
  8. invalid-keyword —— 使用了未知的顶层关键字或 job 级关键字

安全性(6 条)

  1. hardcoded-secret —— 密码、Token、密钥等以明文形式出现在配置中
  2. unprotected-variable —— 敏感特征明显的变量未使用 $CI_* 形式引用
  3. allow-failure-security —— 安全相关 job 设置了 allow_failure: true
  4. privileged-runner —— tags: 中请求特权 runner
  5. unmasked-variable —— 变量疑似敏感,但未标记为 masked
  6. insecure-image —— Docker 镜像使用了 :latest 标签

最佳实践(10 条)

  1. missing-retry —— 部署或测试类 job 缺少 retry: 配置
  2. missing-timeout —— job 未设置 timeout:
  3. no-cache-key —— cache: 中未显式指定 key:
  4. broad-artifacts —— artifacts: paths: 模式过于宽泛
  5. missing-rules —— job 缺少 rules: 或 only:/except:
  6. deprecated-only-except —— 使用 only:/except: 而非推荐的 rules:
  7. long-script —— script: 区块超过 30 行
  8. missing-interruptible —— 长时间运行的 job 未设置 interruptible:
  9. no-coverage-regex —— 测试 job 缺少 coverage: 正则表达式
  10. missing-when —— rules: 条目中缺少 when:

输出格式

Text(默认)

.gitlab-ci.yml:12 error [missing-script] Job 'deploy' has no script:, before_script:, or trigger:
.gitlab-ci.yml:25 warning [missing-timeout] Job 'test' has no timeout: specified
.gitlab-ci.yml:31 info [deprecated-only-except] Job 'build' uses only:/except: instead of rules:

3 issues (1 error, 2 warnings)

JSON

{
  "file": ".gitlab-ci.yml",
  "issues": [...],
  "summary": {"errors": 1, "warnings": 2, "info": 0}
}

Markdown

以表格形式汇总结果,包含严重等级(severity)、规则名(rule)、位置(location)和提示信息(message)。

CI 集成

# .gitlab-ci.yml
lint-pipeline:
  stage: test
  script:
    - python3 scripts/gitlab_ci_linter.py lint .gitlab-ci.yml --strict

退出码说明:0 表示无问题;1 表示发现错误(或在 --strict 模式下发现警告)。

相关专题

更多
git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

2281

6

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

2517

7

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

2023.07.24

714

5

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1260

6

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

3859

9

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 8万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习