当提交推送到另一个项目时触发项目构建
trigger a build on a project when a commit pushes to another project
我在带有 gitlab-runner 机器的 gitlab 上有三个项目 A、B、C。项目 A 包含 gitlab-ci.yml 文件,该文件在 A 上有提交时调用脚本来构建程序:
build:
stage: build
script:
- ./build-platform.sh
A 依赖于 B 和 C 项目。当 B 或 C 上有提交时,如何触发 A 上的构建。我不能将 B、C 放在 A 中,也不能轻松地将 build-platform.sh 转换为 gitlab-ci.yml 文件语法。
有几种方法可以做你想做的事,但它们都依赖于你在 gitlab 中投影 A 的设置并添加一个触发令牌。这是通过单击 触发器 部分中的 Add trigger
通过 <project A's gitlab URL>/settings/ci_cd
页面完成的。
您还可以从该页面找到使用该触发令牌的不同方式。
为了完整起见,这里提到了一些方法:
1 使用 cURL
如果您可以在项目 B 或 C 的构建结束时使用 curl,则只需添加以下内容:
curl -X POST \
-F token=TOKEN \
-F ref=REF_NAME \
<gitlab_url>/api/v3/projects/1/trigger/builds
其中 TOKEN 是您刚刚为项目 A 生成的触发令牌,REF_NAME 是 运行 构建的分支或标记的名称。
如果您有项目 B 和 C 的自动构建(例如使用 .gitlab-ci.yml
文件),则可以完成此操作。
2 使用网络钩子
您可以通过这些项目的 settings/integrations 页面向项目 B 和 C 添加 Webhook。
只需在推送事件上添加以下 webhook:
<gitlab_url>/api/v3/projects/1/ref/REF_NAME/trigger/builds?token=TOKEN
其中TOKEN和REF_NAME同上
我在带有 gitlab-runner 机器的 gitlab 上有三个项目 A、B、C。项目 A 包含 gitlab-ci.yml 文件,该文件在 A 上有提交时调用脚本来构建程序:
build:
stage: build
script:
- ./build-platform.sh
A 依赖于 B 和 C 项目。当 B 或 C 上有提交时,如何触发 A 上的构建。我不能将 B、C 放在 A 中,也不能轻松地将 build-platform.sh 转换为 gitlab-ci.yml 文件语法。
有几种方法可以做你想做的事,但它们都依赖于你在 gitlab 中投影 A 的设置并添加一个触发令牌。这是通过单击 触发器 部分中的 Add trigger
通过 <project A's gitlab URL>/settings/ci_cd
页面完成的。
您还可以从该页面找到使用该触发令牌的不同方式。
为了完整起见,这里提到了一些方法:
1 使用 cURL
如果您可以在项目 B 或 C 的构建结束时使用 curl,则只需添加以下内容:
curl -X POST \
-F token=TOKEN \
-F ref=REF_NAME \
<gitlab_url>/api/v3/projects/1/trigger/builds
其中 TOKEN 是您刚刚为项目 A 生成的触发令牌,REF_NAME 是 运行 构建的分支或标记的名称。
如果您有项目 B 和 C 的自动构建(例如使用 .gitlab-ci.yml
文件),则可以完成此操作。
2 使用网络钩子
您可以通过这些项目的 settings/integrations 页面向项目 B 和 C 添加 Webhook。
只需在推送事件上添加以下 webhook:
<gitlab_url>/api/v3/projects/1/ref/REF_NAME/trigger/builds?token=TOKEN
其中TOKEN和REF_NAME同上