news 2026/6/23 21:37:55

job pipeline如何使用token 触发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
job pipeline如何使用token 触发

Jenkins Pipeline 使用 Token 触发构建的完整指南

Jenkins Pipeline 支持多种通过 Token 触发构建的方式,主要包括内置远程触发Generic Webhook Trigger 插件两种方式。下面详细介绍具体实现方法。


一、生成 Token

1. 用户 API Token(用于认证)

在 Jenkins 中生成用户 API Token,用于身份验证:

步骤:

  1. 登录 Jenkins → 点击右上角用户名 → 选择"Configure"

  2. 找到"API Token"部分

  3. 点击"Add new Token"→ 输入 Token 名称 → 点击"Generate"

  4. 务必保存好生成的 Token,只显示一次

2. Job 触发 Token(用于授权)

在 Job 配置中设置触发令牌:

步骤:

  1. 进入 Pipeline Job 配置页面

  2. 找到"构建触发器"部分

  3. 勾选"Trigger builds remotely"

  4. 输入"Authentication Token"(例如:my-secret-token-123

  5. 保存配置


二、Pipeline 中配置 Token 触发

方式 1:Generic Webhook Trigger 插件(推荐)

安装插件:Generic Webhook Trigger Plugin

在 Jenkinsfile 中配置触发器:

groovy

复制

pipeline { agent any // 定义触发器 triggers { GenericTrigger( // 从 Webhook 请求中提取变量 genericVariables: [ [key: 'ref', value: '$.ref'], [key: 'branch', value: '$.ref', expressionType: 'JSONPath'], [key: 'commit', value: '$.after'] ], // 触发 Token,建议从 Jenkins 凭据中获取 token: 'jenkins-token-xxx', // tokenCredentialId: 'webhook-token-credentials', // 从凭据中获取更安全 // 构建原因说明 causeString: 'Triggered on $ref', // 打印调试信息 printContributedVariables: true, printPostContent: true, // 过滤触发条件 regexpFilterText: '$ref', regexpFilterExpression: 'refs/heads/(main|develop)' // 只匹配 main 和 develop 分支 ) } stages { stage('Process Webhook') { steps { script { // 使用从 Webhook 提取的变量 echo "Branch: ${env.branch}" echo "Commit: ${env.commit}" } } } } }

触发请求示例:

bash

复制

# 在 URL 中传递 token curl -X POST \ -H "Content-Type: application/json" \ -d '{"ref": "refs/heads/main", "after": "abc123"}' \ http://jenkins.local:8080/generic-webhook-trigger/invoke?token=jenkins-token-xxx

方式 2:内置远程触发配置

Declarative Pipeline 示例

groovy

复制

pipeline { agent any // 配置 Job 属性,包括触发器 properties([ pipelineTriggers([ // 启用远程触发 triggers: [ [ $class: 'hudson.triggers.TimerTrigger', spec: 'H/15 * * * *' // 定时触发,可选 ] ] ]) ]) parameters { string(name: 'ENVIRONMENT', defaultValue: 'dev', description: '部署环境') booleanParam(name: 'DEPLOY', defaultValue: false, description: '是否部署') } stages { stage('Build') { steps { echo "Building for ${params.ENVIRONMENT}" } } } }

注意:内置远程触发在 Job 配置页面设置 Token 即可,Jenkinsfile 中无需额外配置。


三、触发构建的多种方式

1. 使用 curl 命令触发

无参数 Pipeline

bash

复制

# 使用 Job Token 触发(无需认证) curl -X POST "http://JENKINS_URL/job/PIPELINE_JOB/build?token=my-secret-token-123" # 使用 API Token 认证(更安全) curl -X POST "http://JENKINS_URL/job/PIPELINE_JOB/build" \ --user "username:api-token"
带参数 Pipeline

bash

复制

# 使用 buildWithParameters curl -X POST "http://JENKINS_URL/job/PIPELINE_JOB/buildWithParameters" \ --user "username:api-token" \ --data "token=my-secret-token-123" \ --data "ENVIRONMENT=production" \ --data "DEPLOY=true" # 或使用 URL 参数(需设置"Build Authorization Token Root"插件) curl -X POST "http://JENKINS_URL/job/PIPELINE_JOB/buildWithParameters?token=my-secret-token-123&ENVIRONMENT=production&DEPLOY=true"

2. 使用 Python 脚本触发

Python

复制

import requests from requests.auth import HTTPBasicAuth # Jenkins 配置 jenkins_url = "http://localhost:8080" job_name = "my-pipeline" username = "jenkins_user" api_token = "11c343cd5f00421..." # 用户 API Token job_token = "my-secret-token-123" # Job 触发 Token # 构建 URL url = f"{jenkins_url}/job/{job_name}/buildWithParameters" # 参数 params = { 'token': job_token, 'ENVIRONMENT': 'staging', 'DEPLOY': 'true' } try: response = requests.post( url, auth=HTTPBasicAuth(username, api_token), data=params ) if response.status_code == 201: print("✅ 构建成功触发!") print(f"构建队列位置: {response.headers.get('Location')}") else: print(f"❌ 构建失败:{response.status_code}") print(response.text) except Exception as e: print(f"❌ 发生错误:{str(e)}")

3. 在另一个 Pipeline 中触发

groovy

复制

pipeline { agent any stages { stage('Trigger Remote Job') { steps { script { // 方式 1:使用 build 步骤 build( job: '/folder/another-pipeline', parameters: [ string(name: 'ENVIRONMENT', value: 'prod'), booleanParam(name: 'DEPLOY', value: true) ], wait: false // 是否等待远程 Job 完成 ) // 方式 2:使用 HTTP 请求 sh """ curl -X POST "http://jenkins:8080/job/another-pipeline/buildWithParameters" \ --user "user:api-token" \ --data "token=job-token" \ --data "ENVIRONMENT=prod" """ } } } } }

四、安全最佳实践

  1. 使用凭据管理 Token

    • 在 Jenkins 中创建 "Secret text" 类型的凭据存储 Token

    • 在 Pipeline 中通过credentials()函数引用

groovy

复制

pipeline { agent any triggers { GenericTrigger( tokenCredentialId: 'webhook-token-credentials', // 从凭据获取 // 其他配置... ) } }
  1. 限制 Token 权限

    • 为不同的集成创建独立的 Jenkins 用户

    • 只授予最小必要权限

  2. 使用 HTTPS

    • 生产环境务必使用 HTTPS 协议

    • 避免 Token 明文传输

  3. IP 白名单

    • 在 Jenkins 中配置允许的源 IP 地址

    • 防止未授权访问


五、完整示例:GitLab Webhook 触发

groovy

复制

pipeline { agent any triggers { GenericTrigger( genericVariables: [ [key: 'ref', value: '$.ref'], [key: 'user', value: '$.user_username'], [key: 'project', value: '$.project.name'] ], token: 'gitlab-integration-token', causeString: '$user 触发了 $project 构建', regexpFilterText: '$ref', regexpFilterExpression: 'refs/heads/(main|develop|release/.*)' ) } environment { // 使用提取的变量 BRANCH = env.ref?.replace('refs/heads/', '') } stages { stage('Checkout') { steps { echo "检出分支: ${env.BRANCH}" // 根据分支名检出代码 } } stage('Build') { when { anyOf { branch 'main' branch 'develop' } } steps { echo "构建项目 ${env.project}" // 执行构建逻辑 } } } post { always { echo "构建完成,触发者: ${env.user}" } } }

GitLab Webhook 配置:

  • URL:http://jenkins.example.com/generic-webhook-trigger/invoke?token=gitlab-integration-token

  • Trigger:Push events

  • Secret Token:gitlab-integration-token


六、常见问题排查

  1. 403 错误:检查用户权限和 CSRF Protection 设置

  2. 401 错误:API Token 或用户名错误

  3. 无法触发:检查 Token 是否匹配,正则过滤条件是否满足

  4. 参数缺失:确保 URL 使用buildWithParameters而不是build

通过以上配置,你可以安全、灵活地使用 Token 触发 Jenkins Pipeline 构建,实现与 GitLab、GitHub、自定义脚本等系统的集成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 18:11:09

【Matlab】五次B样条曲线应用于工业机器人轨迹规划

B样条曲线(B-spline curve)是一种常用于曲线建模和轨迹规划的数学工具。它在工业机器人轨迹规划中有着广泛的应用。B样条曲线能够平滑地描述曲线轨迹,同时具有灵活的控制特性,可以通过调整控制点的位置来实现对曲线形状的精细调节…

作者头像 李华
网站建设 2026/6/22 23:03:02

机器学习001:从“让机器学会思考”到生活中的智能魔法

每天早上醒来,手机推送的新闻恰好是你关注的领域;打开购物软件,首页推荐的商品总能戳中你的喜好;用语音助手发消息,它能精准识别你的口音和语义;开车时,自动驾驶系统会平稳避开障碍物……这些我…

作者头像 李华
网站建设 2026/6/23 11:17:46

Matlab模拟矢量光束之径向偏振光束

Matlab模拟矢量光束之径向偏振光束打开Matlab准备画个径向偏振光束玩玩。这玩意儿的特点是电场矢量沿半径方向分布,就像无数箭头从圆心向外发射。先别急着敲代码,咱得把极坐标系转成直角坐标——Matlab画图还是直角坐标系顺手。先整点基础参数&#xff1…

作者头像 李华
网站建设 2026/6/23 7:47:03

IPSec小结

一、理论学习 视频链接: 【华为数通路由交换HCIP/HCNP(完)】https://www.bilibili.com/video/BV1u741177K9?p61&vd_source074288d86d8ebe37b20564c9a1bc2d47(IPSec VPN) 文章链接: https://blog.c…

作者头像 李华
网站建设 2026/6/23 4:42:01

SAP 中关闭库存期间(MM 物料账期)核心是用MMPV关闭旧期间并打开新期间,配合MMRV控制前期过账权限,同时需完成 FI/CO 等关联模块期间控制与数据校验

SAP 中关闭库存期间(MM 物料账期)核心是用MMPV关闭旧期间并打开新期间,配合MMRV控制前期过账权限,同时需完成 FI/CO 等关联模块期间控制与数据校验,以下是可直接执行的完整步骤与关键配置。一、关闭前准备(…

作者头像 李华