jenkins系列:触发其他Jenkins任务

问题

触发其他Jenkins任务?
这里有两种可能,一种是jenkins本身实例的job和另一种跨实例的调用。
至于你问我,为啥要跨实例调用呢?你也知道有些公司不大,部门倒是齐全,各部门或者小组都有自己的jenkins实例,为了串联它们也就要使用到这个技术了。

解决方法

如果是本实例中的调用,这个是基操。两种方式:
1 - 使用 “Post-build Actions” → “Build other projects”
2 - 使用 pipeline 脚本

如果是调用其他实例, 也有多种模式,最常见的是 webhook
1 - Job 设置为 “Trigger builds remotely”,启用令牌并监听 webhook

先看例子利用 Post-build Actions

在这里插入图片描述
在这里插入图片描述
这种配置就可以了。

利用pipieline脚本

pipeline {
    agent any
    stages {
        stage('Job A') {
            steps {
                build job: 'job-A'
            }
        }
        stage('Job B') {
            steps {
                build job: 'job-B'
            }
        }
    }
}

跨实例的触发方式

在远程需要被触发的Job里面找到

在这里插入图片描述
设置好token,并获取到对应webHook地址
在你运行的Job 使用curl 远程调用就可以了。类似:

curl -X POST "http://jenkins.yourdomain.com/job/job-B/build?token=111111111"

补充:2025-7-29 调用细节,权限补充

由于Jenkins 默认开启了 CSRF 防护(crumb)。需要在请求头中加 crumb token。
而crumb token 又必须是需要通过user + user token获取。
因此,必须先创建一个user token
Jenkins Web UI → Manage Jenkins → Manage Users -User 配置中创建一个api token。
接着,通过user + api toekn 调用 “http://JENKINS_URL/crumbIssuer/api/json” 获取一个crumb token
再构建调用脚本,如下

CRUMB=$(curl --noproxy '*'  -s -u "jenkins_your_user:jenkins_your_user_TOKEN" "http://YOUR_JENKINS_URL/crumbIssuer/api/json" | jq -r '.crumb')

curl  --noproxy '*' -X POST "http://JENKINS_URL/job/YOUR_JOB/buildWithParameters?token=YOUR_JOB_TOKEN&YOUR_PARAM=YOUR_PARAM_VALUE" \
 -H "Jenkins-Crumb: $CRUMB" \
 -u "jenkins_your_user:jenkins_your_user_TOKEN"
 

总结

总体上来说,触发工作通常是在组件与主应用之间。起到联动的作用。
我知道有些大型软件的编译需要一次编译超过10个小时以上的,肯定会使用到不同job来配合。
这个时候就需要其他的工具一起来完成流程执行以及对流程监控的。比如引入 8n8的流程应用等等。

可以被外部或者内部触发,确实是jenkins的基础能力还是可以的。


请收藏问题合集,方便随时查找
jenkins的全解-工欲善其事,必先利其器


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山外山与楼外楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值