如何调用Jenkins的API实现构建
程序员文章站
2022-05-14 20:43:28
...
我调用的方式是curl 前提是本地已搭建好Jenkins,并且已经建好了要构建的任务,(当然也可以自己在调用的时候添加参数,)因为一些原因不乐意点鼠标实现构建, 所以就写了一个脚本,通过调用Jenkins的API实现构建功能,
就一条关键命令
curl -u user:password -s -d build -d delay=0sec http://IP:port/job/project/build?delay=0sec
#user : 用户名,password: 密码 (创建jenkins时的用户名密码)
# IP ,port: jenkins所在主机的IP 以及端口
# project : 项目名字
下面时我的脚本:
#!/bin/sh
jenkins_path="http://172.16.3.26:8080/job"
#需要构建的项目名称(jenkins称为job)
read -p "请输入要上线的项目:" app_buildJob
#jobPage这个地址可以直接访问到你的job路径
jobPage=${jenkins_path}/${app_buildJob}/
#把这个项目的页面信息存到build.tmp文件中
curl -s -o /root/build.tmp ${jobPage}
#对页面信息进行提取最后一次构建序号
lastbuild=$(grep -oE "Last build \(\#[0-9]*" \/root\/build.tmp | grep -oE "[0-9]*")
#接下来要构建序号
newbuild=$[lastbuild+1]
#触发构建(-u后面参数说明:chenwx为jenkins上的登录名,123456为密码)
curl -u zhangsan:123456 -s -d build -d delay=0sec ${jobPage}build?delay=0sec
echo "buliding ${app_buildJob} #${newbuild} url:${jobPage}"
echo -n "building..."
sleep 5
#访问最新构建结果信息放到build.tmp2文件中
#http://ip:port/job/test/buildHistory/ajax --header n:${num} num存放想查看具体某次的构建结果信息
#下面为查看最新构建(刚刚触发的构建)的结果。
curl -o build.tmp2 -s --header n:${newbuild} ${jobPage}buildHistory/ajax
#判断结果文件中是否包含 In progress(排队中)|pending(构建中),是的话每三秒去重新获取结果进行判断
while grep -oE "In progress|pending" build.tmp2;
do
echo -n "."
sleep 3
curl -o build.tmp2 -s --header n:${newbuild} ${jobPage}buildHistory/ajax
done
echo
#包含Success单词为构建成功
if grep -oE "Success" build.tmp2 ;then
echo "Build Success"
#包含Unstable单词为构建有警告但是构建成功
elif grep -oE "Unstable" build.tmp2 ;then
echo "Build Success, but is a Unstable build"
#包含<span style="font-family: Arial, Helvetica, sans-serif;">Failed或者</span><span style="font-family: Arial, Helvetica, sans-serif;">Aborted单词为构建失败</span>
elif grep -qE "Failed|Aborted" build.tmp2 ;then
echo "Build Failed"
echo "#Open Link: ${jobPage}${newbuild}/console see details"
rm -rf build.tmp*
exit 1
fi
#执行过程中产生的文件删除
rm -rf build.tmp*
#下面部署你已经构建好的包 或者时文件。
推荐阅读