【问题标题】:Gitlab CI doesnt trigger pipelines on commit to the specified branchGitlab CI 在提交到指定分支时不会触发管道
【发布时间】:2022-01-16 21:09:24
【问题描述】:

我试图在任何类型的更改/提交(推送/合并/webIDE 等)上触发管道到称为测试分支的特定分支。不知道为什么即使在我对该特定分支中的文件进行更改后它也不会触发。

    default:
      tags: 
        - specs

    stages:
      - validate

    Trigger job:
      stage: validate
      script:
        - curl -X POST -F token=$ENTDV_PL_TRIGGER_TOKEN -F "ref=master" https://gitlab.com/api/v4/projects/1252972/trigger/pipeline
      variables:
        CI_DEBUG_TRACE: "true"
      rules:    
         - if: '$CI_COMMIT_BRANCH == "testbranch"'

【问题讨论】:

  • 你能添加完整的.gitlab-ci.yaml吗?
  • 已添加。还有其他阶段被删除。我基本上想在分支 testbranch 的任何更改上运行管道;除了它的 gitlab-ci.yml
  • only 定义仅针对特定情况触发作业,例如一个分支ref
  • 我可能没有提到分支 A 中存在这个桥接作业 YAML,它正在尝试检测对“testbranch”的更改。下面的工作吗? only: ref: testbranch
  • 不确定我是否正确理解了评论。因此,如果分支A 的更改被推送,管道是为了拉取最新版本的testbranch 并检测那里的更改?这似乎令人困惑。关于only 语句:这意味着如果将更改推送到testbranch,它将运行管道。 ref 关键字不是必需的。上面的链接中提供了main 分支的示例。

标签: gitlab gitlab-ci


【解决方案1】:

如果您希望 Trigger job 仅在 testbranch 上进行更改时运行,您可以将您的 Trigger job 修改为以下内容:

Trigger job:
  stage: validate
  script:
    -  curl -X POST -F token=$ENTDV_PL_TRIGGER_TOKEN -F "ref=master" https://gitlab.com/api/v4/projects/1252972/trigger/pipeline
  variables:
    CI_DEBUG_TRACE: "true"
  only:
    - testbranch

Gitlab CI 文档实际上相当不错。这是“仅”如何工作的链接:https://docs.gitlab.com/ee/ci/yaml/index.html#only--except

来自文档:“使用 only:refs 和 except:refs 关键字来控制何时根据分支名称或管道类型将作业添加到管道。”

您可以做一些其他简洁的事情,例如仅指定 merge_requests 或使用正则表达式来触发作业等等。

【讨论】:

  • 所以,如果我理解正确的话,我可以在 master 分支中添加这个桥接作业,它会检测到 testbranch 中的变化;一旦发现更改就会触发?
  • 我不完全确定您所说的“主分支中的桥梁工作”是什么意思。如果需要,您可以添加此作业并从 master 推送它,但它会立即生效。将来对 testbranch 的任何更改都将触发该作业。
猜你喜欢
  • 2016-10-05
  • 2022-11-15
  • 1970-01-01
  • 2021-12-17
  • 2020-02-23
  • 2020-06-12
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
相关资源
最近更新 更多