温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Jenkins持续集成——参数化构建

发布时间:2020-06-10 08:00:43 来源:网络 阅读:26168 作者:Vnimos 栏目:软件技术

一、String Parameter

由于每次构建的时候指定的SVN路径都不同,如果不使用参数化构建则每次都需要修改配置中的SVN路径,不但不安全也容易出现错误。

将SVN地址设置为字符串参数(string parameter),当开始构建的时候将会提示用户输入参数值(即:SVN地址)

Jenkins持续集成——参数化构建

在SVN中引用参数

Jenkins持续集成——参数化构建

另外,如果需要自动拉取SVN的tag或git的branch可以使用"List Subversion tags(and more)"和"Git Parameter Plug-In"这两个插件,将会自动在所填的SVN/git地址下列出子目录,有兴趣的朋友可以自己研究一下。

当执行构建时,将会弹出页面等待用户输入参数值完成构建

Jenkins持续集成——参数化构建

二、Choice

由于之前未对tomcat的状态检测做参数化构建,故每个模块都需要一个对应的job用于检测,最终将会导致所创建的job数量太大,不但增加了工作量,而且也容易出错。

以下将通过参数化构建将其合并为一个Tomcat_check的job。 

合并前: 

Jenkins持续集成——参数化构建

合并后: 

Jenkins持续集成——参数化构建

勾选配置参数化构建过程(选择"Chice"并定义参数名为Module,Choices的值根据自己的情况填写需要的选项) 

Jenkins持续集成——参数化构建

构建过程(执行check.sh脚本并引用参数Module) 

Jenkins持续集成——参数化构建

触发邮件步骤略(将会在邮件插件中详细介绍)


以下附上检测tomcat的脚本(仅供参考)

Tomcat_check检测脚本

  • 定义check函数用于检测tomcat是否启动正常functions

#定义失败后重试次数
ATTEMPTS=12
FAILED=0
#定义将会输出版本号的日志(可用于发送邮件)
file=$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/check
#jenkins构建时生成的日志,用于追加日志输出到jenkins控制台
log=$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/log
check(){
    echo \<h4\> `date` >> $file
    #当调用check函数带参数时才执行
    while [ $# != 0 ]
    do
        IP=`echo $1 | awk -F "/" '{print $3}' |awk -F ':' '{print $1}'`
        ver=`curl -skf -m 1 $1 |grep -i "v" |head -1|dos2unix`
        curl -skf -m 1 $1 > /dev/null
        #当curl检测URL返回正常时往$file记录IP和版本号并往jenkins控制台输出"$1 is OK"(shift用于向左移动一位参数)
        if [ $? -eq 0 ];then
            echo \<br\> \<a href=$1\>$IP\<\/a\> ++ $ver >> $file
            echo $1 is OK! >> $log
            FAILED=0
            shift
            continue
        else
            #当curl检测URL返回异常则等待10秒后重试
            FAILED=$(($FAILED + 1))
            TIMES=$(($ATTEMPTS - $FAILED + 1))
            echo "Waiting for check the web-$1, retrying in 10 seconds for $TIMES times..." >> $log
            sleep 10
            if [ $ATTEMPTS -gt $FAILED ];then
                continue
            else
                echo "Failed to check the web-$1" >> $log
            fi
            #若重试指定次数后仍然失败则将版本号记录为ERROR,且字体设为红色
            echo \<br\> \<a href=$1\>$IP\<\/a\> ++ \<font color='Red'\>Error\<\/font\> >> $file
            FAILED=0
            shift
            continue
        fi
    done
}

  • 通过脚本调用上面定义的check函数check.sh

#引入参数用于指定需要检测的模块(即参数化构建中的Module)
Module=$1
#引用functions中的check函数
. /data/ztjy/functions
args=`cat /data/ztjy/$Module/url`
check $args
#提取新版本号(相对其他版本而已)
Maxver=`awk -F "+" '{print $3}' $file | grep -i v | sort |tail -1`
#提取旧版本号
Minver=`awk -F "+" '{print $3}' $file | grep -i v | sort |head -1`
#如果是新版本号则改版本号字体显示为橙色
sed -i "s/$Maxver/ <font color='Orange'>$Maxver<\/font>/g" $file
#如果是旧版本号则改版本号字体显示为绿色
sed -i "s/$Minver/ <font color='SeaGreen'>$Minver<\/font>/g" $file


  • 执行参数化构建

Jenkins持续集成——参数化构建

Jenkins持续集成——参数化构建

由上面可见检测后将自动触发邮件通知,邮件内容如下:

Jenkins持续集成——参数化构建



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI