news 2026/4/3 7:39:44

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/4/2 17:49:37

基于SpringBoot+Web的小游戏集成网站源码文档部署文档代码讲解等

课题介绍本课题聚焦小游戏分散式传播、用户体验碎片化、运营管理效率低的痛点,设计实现基于 SpringBootWeb 的小游戏集成网站。系统以 SpringBoot 为核心框架,整合 Spring MVC 完成请求处理与页面渲染,采用 MyBatis-Plus 实现 MySQL 数据库高…

作者头像 李华
网站建设 2026/4/1 20:11:45

【剑斩OFFER】链表常用技巧和操作总结

一、常用技巧1)画图 ——> 直观 形象 便于我们理解2)引入虚拟头结点(哨兵位),原因:1、便于处理边界情况;2、方便我们对链表操作3)不要吝啬空间,大胆定义变量。4&…

作者头像 李华
网站建设 2026/4/2 21:45:10

在SAP中实现一个会计凭证在不同帐套中使用不同的凭证编号,主要通过跨公司代码记账和凭证编号范围配置来实现

在SAP中实现一个会计凭证在不同帐套中使用不同的凭证编号,主要通过跨公司代码记账和凭证编号范围配置来实现。以下是具体实现方法:一、核心配置原理1. 凭证编号范围配置每个公司代码可以分配不同的凭证编号范围:SPRO路径:财务会计…

作者头像 李华
网站建设 2026/3/27 19:27:18

SAP GGB1 是一个非常重要的后台配置事务码

SAP GGB1 是一个非常重要的后台配置事务码。下面详细说明其路径、作用和业务功能。1. 路径GGB1 是 SAP 中“总账会计”模块下,专门用于 “平行会计” 和 “特殊目的分类账” 配置的核心事务码。其标准菜单路径如下:SAP 轻松访问菜单: 会计 -&…

作者头像 李华
网站建设 2026/3/31 19:59:14

PHP的Stack trace:的庖丁解牛

PHP 的 Stack trace(堆栈跟踪) 是程序发生未捕获异常或错误时,PHP 引擎自动生成的函数调用路径回溯信息。它如同“程序崩溃时的行车记录仪”,记录了错误发生前的完整调用链。一、一个典型 Stack trace 长什么样? Fatal…

作者头像 李华
网站建设 2026/3/21 5:03:05

vue和springboot框架开发的在线考试系统_4fqosg85

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vue和springboot框架开发的在线考试系统_4fqosg85 …

作者头像 李华