流水线编辑器

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab.com, 私有化部署

极狐GitLab 流水线编辑器是编辑极狐GitLab CI/CD 配置的主要位置,可以在你的仓库根目录中的 .gitlab-ci.yml 文件中进行编辑。要访问编辑器,请转到 构建 > 流水线编辑器

在流水线编辑器页面中,你可以:

  1. 选择要工作的分支。
  2. 在编辑文件时验证你的配置语法。
  3. 进行更深入的语法检查,验证任何使用 include 关键字添加的配置。
  4. 查看使用 include 关键字添加的 CI/CD 配置列表
  5. 查看当前配置的 可视化
  6. 查看 完整配置,显示包含 include 配置的完整配置。
  7. 将更改提交到特定分支。

验证 CI 配置#

当你编辑流水线配置时,它会不断地根据极狐GitLab CI/CD 流水线架构进行验证。它检查你的 CI YAML 配置的语法,并运行一些基本的逻辑验证。

验证结果显示在编辑器页面顶部。如果验证失败,此部分会显示一个提示,帮助你解决问题:

语法检查 CI 配置#

在极狐GitLab 15.3 中,语法检查标签被替换为验证标签。语法检查结果包含在成功的 流水线模拟中。

要在提交更改之前测试极狐GitLab CI/CD 配置的有效性,可以使用 CI 语法检查工具:

  1. 在左侧边栏,选择 搜索或前往 并找到你的项目。
  2. 选择 构建 > 流水线编辑器
  3. 选择 验证 标签。

该工具检查语法和逻辑错误,但比编辑器中的自动验证更详细。

结果会实时更新。你对配置所做的任何更改都会反映在 CI 语法检查中。它显示与现有 CI 语法检查工具相同的结果。

模拟 CI/CD 流水线#

History
    • 引入于极狐GitLab 15.3。

要查找流水线语法和逻辑问题,可以在 验证 标签中模拟创建极狐GitLab CI/CD 流水线。流水线模拟可以帮助找到诸如不正确的 rulesneeds 作业依赖关系等问题,并类似于 CI 语法检查工具中的模拟。

查看包含的 CI/CD 配置#

History
    • 引入于极狐GitLab 15.0,使用名为 pipeline_editor_file_tree功能标志。默认禁用。
    • 功能标志在极狐GitLab 15.1 中被移除。

可以在流水线编辑器中查看使用 include 关键字添加的配置。在右上角,选择文件树 (

) 查看所有包含的配置文件列表。选中的文件会在新标签页中打开以供查看。

可视化 CI 配置#

要查看你的 .gitlab-ci.yml 配置的可视化,请在你的项目中转到 构建 > 流水线编辑器,然后选择 可视化 标签。可视化显示所有阶段和作业。任何 needs 关系都显示为连接作业的线条,展示执行的层次结构。

鼠标悬停在作业上以突出显示其 needs 关系:

CI/CD 配置在悬停时的可视化

如果配置没有任何 needs 关系,则不会绘制任何线条,因为每个作业仅依赖于前一个阶段成功完成。

查看完整配置#

History
    • 查看合并的 YAML 标签在极狐GitLab 16.0 中重命名为 完整配置.

要查看完全展开的 CI/CD 配置作为一个合并文件,请转到流水线编辑器的 完整配置 标签。此标签显示一个展开的配置,其中:

  1. 使用 include 导入的配置被复制到视图中。
  2. 使用 extends 的作业显示为扩展配置合并到作业中
  3. YAML 锚点 被替换为链接的配置。
  4. YAML !reference 标签 也被替换为链接的配置。
  5. 假设默认分支推送事件,评估条件规则。

使用 !reference 标签可能导致嵌套配置在展开视图中显示为行开头有多个连字符 (-)。这种行为是预期的,额外的连字符不会影响作业的执行。例如,以下配置和完全展开版本都是有效的:

  • .gitlab-ci.yml 文件:

    yaml
    1.python-req: 2 script: 3 - pip install pyflakes 4 5.rule-01: 6 rules: 7 - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ 8 when: manual 9 allow_failure: true 10 - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME 11 12.rule-02: 13 rules: 14 - if: $CI_COMMIT_BRANCH == "main" 15 when: manual 16 allow_failure: true 17 18lint-python: 19 image: python:latest 20 script: 21 - !reference [.python-req, script] 22 - pyflakes python/ 23 rules: 24 - !reference [.rule-01, rules] 25 - !reference [.rule-02, rules]
  • 完整配置 标签中的展开配置:

    yaml
    1".python-req": 2 script: 3 - pip install pyflakes 4".rule-01": 5 rules: 6 - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/" 7 when: manual 8 allow_failure: true 9 - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" 10".rule-02": 11 rules: 12 - if: $CI_COMMIT_BRANCH == "main" 13 when: manual 14 allow_failure: true 15lint-python: 16 image: python:latest 17 script: 18 - - pip install pyflakes # <- The extra hyphens do not affect the job's execution. 19 - pyflakes python/ 20 rules: 21 - - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/" # <- The extra hyphens do not affect the job's execution. 22 when: manual 23 allow_failure: true 24 - if: "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" # <- No extra hyphen but aligned with previous rule 25 - - if: $CI_COMMIT_BRANCH == "main" # <- The extra hyphens do not affect the job's execution. 26 when: manual 27 allow_failure: true

提交 CI 配置更改#

提交表单显示在编辑器中每个标签的底部,以便你随时提交更改。

当你对更改满意时,添加描述性提交消息并输入分支。分支字段默认为项目的默认分支。

如果你输入新的分支名称,则会出现 用这些更改启动新的合并请求 复选框。选择它以在提交更改后启动新的合并请求。

带有新分支的提交表单

故障排除#

配置验证当前不可用 消息#

此消息是由于在流水线编辑器中验证语法时出现问题引起的。可能发生在:

  1. 极狐GitLab 无法与验证语法的服务通信,因此这些部分中的信息可能无法正确显示:

    • 编辑 标签上的语法状态(有效或无效)。
    • 可视化 标签。
    • 语法检查 标签。
    • 完整配置 标签。

    你仍然可以在 CI/CD 配置上工作并提交所做的更改而不会出现任何问题。服务重新可用后,语法验证应该立即显示。

  2. 使用 include,但包含的配置文件创建了一个循环。例如,.gitlab-ci.yml 包含 file1.ymlfile1.yml 包含 file2.yml,而 file2.yml 又包含 file1.yml,在 file1.ymlfile2.yml 之间创建了一个循环。

    删除其中一行 include 来消除循环并解决问题。