通过API触发管道
笔记:
触发器可用于强制管道重新运行特定的裁判
(分支或标记)与API调用。
身份验证令牌
支持以下认证方法。
触发令牌
在以下情况下可以获得唯一的触发令牌添加一个新的触发器.
添加一个新的触发器
您可以通过转到您的项目来添加新的触发器设置intelligent /CD下触发器.的添加触发器按钮将创建一个新的令牌,然后您可以使用它来触发此特定项目管道的重新运行。
您创建的每个新触发器都会被分配一个不同的令牌,然后您可以在脚本或.gitlab-ci.yml
.您还可以很好地了解最后一次使用触发器的时间。
掌握扳机的所有权
请注意: GitLab 9.0引入了触发器所有权来解决权限问题。
运行时创建的每个触发器将模拟其关联的用户,包括其对项目的访问权限和项目权限。
您可以通过单击获得现有触发器的所有权获得所有权.从现在起,扳机将以你的身份执行。
撤销触发器
您可以在项目的任何时候撤销触发器设置intelligent /CD下触发器打到撤销按钮。这种行为是不可逆转的。
触发管道
笔记:
- 有效的引用只有分支和标签。如果您将提交SHA作为ref传递,则不会触发作业。
- 如果您的项目是公开的,那么以纯文本形式传递令牌可能不是最明智的主意,因此您可能希望使用秘密的变量为了这个目的。
要触发作业,您需要发送一个帖子
请求到GitLab的API端点:
POST /项目/:id /触发/管道
所需的参数是触发的令牌
和Git裁判
将在其上执行触发器。有效的参考是分支和标记。的: id
一个项目的查询API或者访问CI / CD设置页面,其中提供了不言自明的示例。
当触发管道的重新运行时,信息将在GitLab的UI中暴露工作页面,作业被标记为“由API”触发。
您可以通过访问单个作业页面来查看是哪个触发器导致了重新生成。触发器令牌的一部分暴露在UI中,如下图所示。
通过使用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中公开的,如果传递一个解释重建目的的变量,就可以知道为什么会触发重建。
- 条件作业处理。可以有条件作业,只要存在某个变量就运行。
考虑以下几点.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版本中被删除。我们建议您获得所有权任何遗留的触发器。