yml文件介绍

yml文件介绍

一、YAML 本身是干嘛的?

YAML = Yet Another Markup Language(或 YAML Ain’t Markup Language)

它是一种人类可读的配置语言,特点是:

  • 缩进 表示层级(像 Python)
  • :- 表示键值对和列表
  • 几乎没有多余符号(不像 JSON 那么多 {}[]

✅ 易读
✅ 易写
✅ 非常适合 CI / 容器 / 云原生配置


二、在 GitLab CI 里,YAML 具体“管什么”?

.gitlab-ci.yml 负责描述 整个流水线(Pipeline)

概念 YAML 里怎么体现
有哪些阶段 stages:
有哪些任务 job 名(如 compilesmoke
任务属于哪个阶段 stage:
在哪个 Runner 上跑 tags:
跑哪些命令 script:
什么时候跑 rules: / when:
产物怎么保存 artifacts:

三、一个最小 YAML 示例(对比 Makefile)

Makefile 写法

regression:vcs -sverilog top.sv

GitLab CI 的 YAML 写法

regression:stage: testtags: [uvm-sim]script:- source /tools/eda_setup.sh- vcs -sverilog top.sv

📌 区别:

  • Makefile:你手动执行
  • YAML:GitLab 自动解析并执行

四、YAML 在 UVM平台 回归中的真实角色

你的 .gitlab-ci.yml 实际在做这些事:

# 告诉 GitLab:
# 1️⃣ 先编译
# 2️⃣ 再冒烟
# 3️⃣ 最后全量回归
# 并且每一步都用 EDA 服务器的 shell 跑

相当于把原来你手动敲的命令:

ssh eda-server
cd project
source setup.sh
make regress

变成 GitLab 自动调度、自动记录结果、自动保存 log


五、YAML 的几个“必须知道”的坑

❌ 1️⃣ 缩进不能用 Tab

job:script:     # ❌ Tab

✅ 必须用空格:

job:script:- echo hello

❌ 2️⃣ 少一个 - 就全错

script:echo hello   # ❌

✅ 正确:

script:- echo hello

❌ 3️⃣ 多行命令要小心

script:- |source /tools/setup.shmake compilemake run

六、YAML ≠ 脚本

YAML Shell Script
描述“要做什么” 描述“怎么做”
GitLab 解析 Bash 执行
声明式 命令式
不负责计算 负责计算

YAML 里不写复杂逻辑
复杂逻辑交给 Python / Makefile / Shell