You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins脚本及Jenkinsfile中配置认证令牌实现远程构建触发?

Jenkins 远程触发构建的认证令牌配置(脚本方式)

1. 在Jenkinsfile中使用认证令牌触发构建

Jenkinsfile主要用于定义流水线执行逻辑,若要实现远程触发或在流水线内触发其他任务,分两种场景处理:

  • 远程触发当前流水线:当前流水线需先完成远程触发的配置(见第二部分),之后通过带令牌的URL直接触发:http://<jenkins地址>/job/<任务名>/build?token=<你的令牌值>,Jenkinsfile本身无需额外嵌入令牌。
  • 在流水线内触发其他已配置令牌的任务:可通过两种方式实现:
    // 方式1:使用Jenkins内置build步骤(需确保当前流水线有目标任务的触发权限)
    build job: '目标任务名称', token: '目标任务的令牌', parameters: [
        [$class: 'StringParameterValue', name: 'PARAM_NAME', value: '参数值']
    ]
    
    // 方式2:通过shell脚本调用curl触发
    sh '''
      curl -X POST "http://jenkins地址/job/目标任务名称/build?token=目标任务的令牌"
    '''
    

2. 通过Jenkins脚本设置认证令牌

可使用Groovy脚本在Jenkins脚本控制台(系统管理→脚本控制台)或流水线中执行,完成任务的远程触发令牌配置:

单个任务配置

// 定位目标任务
def targetJob = Jenkins.instance.getItemByFullName('你的任务名称')
// 获取任务的触发器配置集合
def triggers = targetJob.getTriggers()

// 实例化远程触发器并设置令牌
def remoteTrigger = new hudson.triggers.RemoteTrigger('自定义的认证令牌')
triggers.put(hudson.triggers.RemoteTrigger.class, remoteTrigger)

// 保存任务配置
targetJob.save()
println "已为任务 ${targetJob.name} 设置远程触发令牌"

批量配置多个任务

如果需要给一批任务统一设置令牌,可遍历任务列表处理:

def jobList = ['任务A', '任务B', '任务C']
def unifiedToken = '统一的认证令牌'

jobList.each { jobName ->
  def job = Jenkins.instance.getItemByFullName(jobName)
  if (job) {
    def triggers = job.getTriggers()
    triggers.put(hudson.triggers.RemoteTrigger.class, new hudson.triggers.RemoteTrigger(unifiedToken))
    job.save()
    println "已完成任务 ${jobName} 的令牌配置"
  } else {
    println "未找到任务 ${jobName}"
  }
}

注意事项

  • 执行脚本需要Jenkins管理员权限,因为涉及修改任务核心配置
  • 令牌建议使用随机复杂字符串,降低未授权触发风险
  • 配置修改后自动生效,无需重启Jenkins服务

内容的提问来源于stack exchange,提问作者olep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:02:21