3

我正在尝试使用远程触发器在 ci.gitlab 中进行(重新)构建。为了解释这一点,我编造了这个场景:

  • 2 存储库,“lib”和“app1”
  • 仅当包含 lib 时 app1 才会成功构建(只需 .gitlab-ci.yml 即可解决)
  • 我需要在 lib 的提交(或合并请求)时触发 app1 的构建(仅适用于 master 分支,在最佳情况下)

我试图使用网络挂钩来解决这个问题,但我找不到 ci.gitlab.com 的网址。这在 gitlab 环境中可行吗?

4

1 回答 1

3

您可以使用新添加的触发器功能来执行此操作。

在 CI 的项目中,找到“触发器”部分。添加一个触发器并像这样使用它的令牌:

curl -X POST \
 -F token=TOKEN \
 https://ci.gitlab.com/api/v1/projects/{project_id}/refs/REF_NAME/trigger

https://about.gitlab.com/2015/08/22/gitlab-7-14-released/

过时的:

我们有同样的问题,我们解决它的方法是推送并随后删除一个标签。

假设您使用 Gitlab-CI runner 管理机器。首先,app1为您克隆主存储库。并在lib's.gitlab-ci.yml添加步骤:

- cd /path/to/app1_repository
- git pull
- git tag ci-trigger master
- git push origin ci-trigger
- git push --delete origin ci-trigger
- git tag -d ci-trigger

确保Tag push events在 Gitlab-CI 的 Gitlab 服务设置中选中该选项。

这种解决方案有缺点:

  • Gitlab-CI 运行器必须对存储库具有写入权限,因此它不适用于共享运行器
  • git 历史会因所有这些标记而变得臃肿(尤其是 Gitlab UI)

我为此打开了一个问题(https://gitlab.com/gitlab-org/gitlab-ci/issues/223),所以我们希望他们将此功能添加到 API 中(http://doc.gitlab.com/ci/ api/README.html )。

于 2015-07-18T19:12:04.777 回答