GitLab 事件触发器允许您通过 GitLab 的 Webhook 事件自动触发 Tekton 管道。它支持多种事件类型,包括代码推送、合并请求、评论等,使您能够构建完整的 CI/CD 自动化工作流程。
所有输出变量都可以用于管道参数映射。您可以使用 $(tt.params.<param name>)
访问参数值。
变量名称 | 描述 | 示例值 |
---|---|---|
project-id | GitLab 项目 ID | 1234 |
project-name | 项目名称 | my-project |
project-path | 项目全路径 | group/my-project |
project-web-url | 项目网页 URL | https://gitlab.com/group/my-project |
git-repo-url | Git HTTP URL | https://gitlab.com/group/my-project.git |
git-repo-ssh-url | Git SSH URL | git@gitlab.com:group/my-project.git |
git-repo-name | 仓库名称 | my-project |
user-name | 用户全名 | John Doe |
user-username | 用户名 | johndoe |
user-email | 用户邮箱 | john@example.com |
当开发者向 GitLab 仓库推送代码时触发。适用于:
变量名称 | 描述 | 示例值 |
---|---|---|
git-revision | Git 修订版 | refs/heads/main |
git-commit-sha | 提交 SHA | 8a1b3c4d5e6f... |
git-commit-message | 提交信息 | Update README.md |
git-commit-timestamp | 提交时间戳 | 2025-01-26T10:30:00Z |
当创建、更新或关闭合并请求时触发。适用于:
变量名称 | 描述 | 示例值 |
---|---|---|
mergereq-sha | 最后提交 SHA | 8a1b3c4d5e6f... |
mergereq-action | 合并请求操作 | open , reopen , update , close , merge |
mergereq-state | 合并请求状态 | opened , closed , merged |
mergereq-number | 合并请求编号 | 42 |
mergereq-url | 合并请求 URL | https://gitlab.com/group/project/-/merge_requests/42 |
mergereq-title | 合并请求标题 | Add new feature |
mergereq-description | 合并请求描述 | This PR adds... |
mergereq-merge-status | 合并状态 | can_be_merged |
mergereq-source-branch | 源分支 | feature/new-feature |
mergereq-target-branch | 目标分支 | main |
mergereq-source-path | 源仓库路径 | group/my-project |
mergereq-target-path | 目标仓库路径 | group/my-project |
请参考您的 GitLab 实例的 webhook 文档或 GitLab 的官方合并请求事件文档
支持以下类型的评论:
适用于:
变量名称 | 描述 | 示例值 |
---|---|---|
comment | 评论内容 | LGTM 👍 |
comment-url | 评论 URL | https://gitlab.com/group/project/-/merge_requests/42#note_123 |
变量名称 | 描述 | 示例值 |
---|---|---|
mergereq-sha | 最后提交 SHA | 8a1b3c4d5e6f... |
mergereq-action | 合并请求操作 | open , reopen , update , close , merge |
mergereq-state | 合并请求状态 | opened , closed , merged |
mergereq-number | 合并请求编号 | 42 |
mergereq-url | 合并请求 URL | https://gitlab.com/group/project/-/merge_requests/42 |
mergereq-title | 合并请求标题 | Add new feature |
mergereq-description | 合并请求描述 | This PR adds... |
mergereq-merge-status | 合并状态 | can_be_merged |
mergereq-source-branch | 源分支 | feature/new-feature |
mergereq-target-branch | 目标分支 | main |
mergereq-source-path | 源仓库路径 | group/my-project |
mergereq-target-path | 目标仓库路径 | group/my-project |
变量名称 | 描述 | 示例值 |
---|---|---|
git-commit-sha | 提交 SHA | 8a1b3c4d5e6f... |
git-commit-message | 提交信息 | Update README.md |
git-commit-timestamp | 提交时间戳 | 2025-01-26T10:30:00Z |
git-commit-url | 提交 URL | https://gitlab.com/group/project/-/commit/8a1b3c4d |
EventListener
,并能够处理目标命名空间中的 Trigger
。请联系您的平台管理员获取更多信息。EventListener
。Pipeline
及必要的运行配置已创建。EventListener
的部署模式添加 Webhook URL,例如,使用 https
模式:
如果目标是在触发器上实现持续集成,具体要求如下:
为了简化文档,我们假设该管道已准备好,并提供以下参数:
参数名称 | 描述 | 示例值 |
---|---|---|
git-revision | 执行目标管道的 Git 修订版 | refs/heads/main |
git-repo-url | Git 仓库 URL | https://gitlab.com/group/project.git |
请用实际的管道信息替换。
信息 | 描述 |
---|---|
my-namespace | 命名空间名称 |
my-pipeline | 管道名称 |
workspaces | 工作空间配置,依据实际的管道工作空间配置及要求进行修改 |
接下来,我们只需配置以下两个触发器:
将以下 YAML 保存为 gitlab-push-trigger.yaml
:
在环境中创建资源:
将以下 YAML 保存为 gitlab-merge-request-trigger.yaml
:
请根据需要调整拦截器配置。
在环境中创建资源:
通过提交代码并创建合并请求来进行验证。
CLI:
您可以使用 kubectl -n <namespace> get pipelinerun
获取管道执行状态。
控制台:
访问 Pipelines
> PipelineRuns
查看已触发的管道。