远程触发CI Gitlab的(重新)构建

3

我正在尝试在ci.gitlab中使用远程触发器进行(重新)构建。为了解释这一点,我想出了以下情景:

  • 有两个仓库,“lib”和“app1”
  • 只有在包含lib时,app1才能成功构建(通过 .gitlab-ci.yml 简单解决)
  • 我需要在lib提交(或合并请求)时触发app1的构建(仅适用于主分支,最好的情况下)

我尝试使用web hook来解决这个问题,但是我没有找到ci.gitlab.com的url。在GitLab环境中是否可能实现这一点?

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.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

请确保在 Gitlab 服务设置中开启了选项 Tag push events,以便于 Gitlab-CI 使用。
此方法有以下缺点:
  • Gitlab-CI 运行器必须对仓库具有写权限,因此无法用于共享运行器。
  • 所有标签会导致 Git 历史记录变得臃肿(尤其是 Gitlab UI)。
我已经为此开了一个问题 (https://gitlab.com/gitlab-org/gitlab-ci/issues/223),希望他们能够在 API (http://doc.gitlab.com/ci/api/README.html) 中添加此功能。

谢谢你的回答,正如你所指出的那样,它有点凌乱,但它能够工作。 - Joshua_88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接