欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何调用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*
#下面部署你已经构建好的包 或者时文件。
相关标签: Jenkins