我正在尝试使用远程触发器在 ci.gitlab 中进行(重新)构建。为了解释这一点,我编造了这个场景:
- 2 存储库,“lib”和“app1”
- 仅当包含 lib 时 app1 才会成功构建(只需 .gitlab-ci.yml 即可解决)
- 我需要在 lib 的提交(或合并请求)时触发 app1 的构建(仅适用于 master 分支,在最佳情况下)
我试图使用网络挂钩来解决这个问题,但我找不到 ci.gitlab.com 的网址。这在 gitlab 环境中可行吗?
您可以使用新添加的触发器功能来执行此操作。
在 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 服务设置中选中该选项。
这种解决方案有缺点:
我为此打开了一个问题(https://gitlab.com/gitlab-org/gitlab-ci/issues/223),所以我们希望他们将此功能添加到 API 中(http://doc.gitlab.com/ci/ api/README.html )。