通过API触发管道

笔记

触发器可用于强制管道重新运行特定的裁判(分支或标记)与API调用。

身份验证令牌

支持以下认证方法。

触发令牌

在以下情况下可以获得唯一的触发令牌添加一个新的触发器

添加一个新的触发器

您可以通过转到您的项目来添加新的触发器设置intelligent /CD触发器.的添加触发器按钮将创建一个新的令牌,然后您可以使用它来触发此特定项目管道的重新运行。

您创建的每个新触发器都会被分配一个不同的令牌,然后您可以在脚本或.gitlab-ci.yml.您还可以很好地了解最后一次使用触发器的时间。

触发器页面概述”class=

掌握扳机的所有权

请注意: GitLab 9.0引入了触发器所有权来解决权限问题。

运行时创建的每个触发器将模拟其关联的用户,包括其对项目的访问权限和项目权限。

您可以通过单击获得现有触发器的所有权获得所有权.从现在起,扳机将以你的身份执行。

撤销触发器

您可以在项目的任何时候撤销触发器设置intelligent /CD触发器打到撤销按钮。这种行为是不可逆转的。

触发管道

笔记

  • 有效的引用只有分支和标签。如果您将提交SHA作为ref传递,则不会触发作业。
  • 如果您的项目是公开的,那么以纯文本形式传递令牌可能不是最明智的主意,因此您可能希望使用秘密的变量为了这个目的。

要触发作业,您需要发送一个帖子请求到GitLab的API端点:

POST /项目/:id /触发/管道

所需的参数是触发的令牌和Git裁判将在其上执行触发器。有效的参考是分支和标记。的: id一个项目的查询API或者访问CI / CD设置页面,其中提供了不言自明的示例。

当触发管道的重新运行时,信息将在GitLab的UI中暴露工作页面,作业被标记为“由API”触发。

将重建标记为“作业”页上的”class=


您可以通过访问单个作业页面来查看是哪个触发器导致了重新生成。触发器令牌的一部分暴露在UI中,如下图所示。

将重建标记为在单个作业页面上触发”class=


通过使用cURL,你可以用最少的努力触发一个管道的重新运行,例如:

旋度——请求帖子——形式令牌令牌——形式裁判https://gitlab.example.com/api/v4/projects/9/trigger/pipeline

在本例中,具有ID的项目9将被重建分支。

或者,您可以通过令牌裁判查询字符串中的参数:

旋度——请求帖子“https://gitlab.example.com/api/v4/projects/9/trigger/pipeline?token=TOKEN&ref=master”

你也可以通过在你的.gitlab-ci.yml.假设您有两个项目,A和B,并且您想在在项目a上创建标记时,创建项目B的分支。这是您需要在项目的A中添加的工作.gitlab-ci.yml

build_docs阶段部署脚本-旋度——请求帖子——形式令牌=令牌——形式ref =主https://gitlab.example.com/api/v4/projects/9/trigger/pipeline”只有-标签

现在,每当在项目a上推送一个新标记时,作业就会运行build_docs作业将被执行,从而触发项目b的重建阶段:部署确保此作业仅在所有作业运行之后才运行测试阶段:成功完成。

从webhook触发管道

笔记

  • 在GitLab 8.14中引入。
  • 裁判应该作为URL的一部分传递,以便优先于裁判从指定在源存储库中触发触发器的分支ref的webhook主体中获取。
  • 裁判如果包含斜杠,则应使用url编码。

要从另一个项目的webhook触发一个作业,你需要为Push和Tag事件添加以下webhook URL(更改项目ID, ref和token):

https://gitlab.example.com/api/v4/projects/9/ref/master/trigger/pipeline?token=TOKEN

使用触发器变量

你可以在触发器API调用中传递任意数量的变量,它们将在GitLab CI中可用,以便它们可以在你的.gitlab-ci.yml文件。参数的形式为:

变量(例子)=价值

此信息也在UI中公开。

UI中的作业变量”class=

使用触发变量可以被证明是有用的,原因有很多:

  • 可识别的工作。由于变量是在UI中公开的,如果传递一个解释重建目的的变量,就可以知道为什么会触发重建。
  • 条件作业处理。可以有条件作业,只要存在某个变量就运行。

考虑以下几点.gitlab-ci.yml我们设置了3阶段upload_package作业只有在测试和构建阶段的所有作业都通过时才运行。当UPLOAD_TO_S3变量是非零的,让上传运行。

阶段-测试-构建-run_tests脚本-做测试build_package阶段构建脚本-使构建upload_package阶段脚本-if [-n "${UPLOAD_TO_S3}"];然后进行上传;fi

然后,您可以在传递时触发重建UPLOAD_TO_S3变量和脚本的upload_package作业将运行:

旋度——请求帖子——形式令牌令牌——形式裁判——形式“变量(UPLOAD_TO_S3) = true”https://gitlab.example.com/api/v4/projects/9/trigger/pipeline

使用cron来触发夜间管道

注意:下面的行为也可以通过GitLab的UI来实现管道的日程安排

无论是编写脚本还是直接运行cURL,都可以与cron一起触发作业。的上触发一个作业有ID的项目分支9每天晚上00:30

30 0***旋度——请求帖子——形式令牌令牌——形式裁判掌握https://gitlab.example.com/api/v4/projects/9/trigger/pipeline

遗留的触发器

在GitLab 9.0之前创建的旧触发器将被标记为遗留触发器。

带有遗留标签的触发器没有关联的用户,只能访问当前项目。它们被认为已弃用,并将在未来的GitLab版本中被删除。我们建议您获得所有权任何遗留的触发器。

Baidu
map