播放记录

Jenkins实战应用–Jenkins参数化构建犀利插件Active-Choices-Plugin

博客术业专攻自动化运维JenkinsJenkins实战应用–Jenkins参数化构建犀利插件Active-Choices-Plugin 2019年08月29日 11:24:49

*系列汇总*

这是一个系列文章,大大小小到今天惊然发现竟然已经累计二十篇了,也就不得不做一个小汇总。回想当初写第一篇文章的时候,就已经决心事无巨细,一应认真的走下来,回头遮望,看着皇皇这么多文章,一股强烈的成就感就此油然而生,于是便有了这些汇总整理。在这个过程当中,好像也帮助过不少的人,这是让我尤其开心的事情,同时也结识了一些志同道合的朋友,再没有比这更让人觉得愉悦的事情啦!也希望以后写出更多类似的系列文章。

文章汇总地址如右:Jenkins入门教程。

如果相中哪个,点击进去便是。希望正在读这段话的你能够在这个小系列中获得自信以及喜悦!

1,前言。

有时候我们在测试环境当中,可能同一个项目,需要部署多套的环境,这个时候可以针对每套环境来创建多个项目进行构建,这样做不无不可,但是今天要介绍一个插件,可以非常优雅的将这些情况,浓缩到一个job里边。

刚刚还在一个博主的自我介绍里看到这样一句话:喜欢一切优雅的运维方式···

通过今天的这个插件,可以让我们优雅很多。

2,插件介绍。

  • 官方地址:https://wiki.jenkins.io/display/JENKINS/Active+Choices+Plugin
  • 安装方式:在Jenkins插件当中直接搜索即可安装。
  • 功能说明:根据所选参数,自动调出对应参数所依赖的后续参数。

3,使用插件前的方案。

那么在这种需求之下,基本思路就是,创建两个项目,每个项目负责进行分发部署。详细配置不讲解了,直接看截图内容:

简单说就是创建一个自由风格的项目,可以部署到192.168.10.1以及192.168.10.2上去,然后再创建一个项目b,内容也是一样,只不过分发主机变成了192.168.10.3和192.168.10.4。这么做其实也没什么,但是有点不太优雅。

4,使用插件后的方案。

首先安装上边介绍的插件,接着对项目开始进行配置。

这里着重介绍一下参数以及使用新参数构建时的部署脚本的调整。

1,添加Active Choices Parameter。

去掉刚刚的host的选项参数,然后替换为Active Choices Parameter,首选设置第一道参数,也就是我们刚刚规划的两套环境的参数:

  • name:定义一个名称为plan的参数,是的,已经开始了,我们的A计划以及B计划。
  • script:这里使用Jenkins的groovy语言进行编写,不了解也没关系,按这个来修改即可。
    return[
    "Aplan",
    "Bplan"
    ]
    
  • Description:写入一些描述信息。
  • Choice Type:这里定义的是构建时选择的类型,这个地方推荐使用Radio Buttons。

接着来添加上述定义参数所依赖的第二步骤参数。

2,添加Active Choices Reactive Parameter。

通过添加被动参数,从而实现如上参数选择之后,此处配置的参数自动跟随变动的效果:

  • Name:定义一个名称为host的参数,从而追随如上我们定义的A计划或者B计划。
  • script:特有的格式,如果需要更多参数,动态添加即可。
    A=["all","192.168.10.1","192.168.10.2"]
    B=["all","192.168.10.3","192.168.10.4"]
    if(plan.equals("Aplan")){
     return A
    }
    if(plan.equals("Bplan")){
     return B
    }
    
  • Description:写入一些描述信息。
  • Choice Type:这里定义的是构建时选择的类型,这个地方推荐使用默认的。

3,调整shell。

接下来要做的工作,就是根据如上定义的参数,进行相应的调整,从而适用于新的构建方式,我这里简单做了一个小例子作为展示:

##set color##
echoRed() { echo $'\e[0;31m'"$1"$'\e[0m'; }
echoGreen() { echo $'\e[0;32m'"$1"$'\e[0m'; }
echoYellow() { echo $'\e[0;33m'"$1"$'\e[0m'; }
##set color##

source /etc/profile
project="config"
remote_user="root"
remote_port="22"
remote_dir=/usr/local/$project
script_dir=/usr/local/scripts

#cd $WORKSPACE && mvn  clean install -DskipTests=true

deploy(){
    IP=$1
    echoGreen "start scp $project  on $IP"
    #scp -P $remote_port $project.jar $remote_user@$IP:$remote_dir/$project.jar && echo "success scp $project"
    #ssh -p $remote_port $remote_user@$IP "/bin/bash $script_dir/deploy.sh $mode $project"
}

if [ $mode == "deploy" ];then
  if [ $plan == "Aplan" ];then
  echoRed "您选择执行的是A计划"
    if [ $host == "all" ];then
      deploy 192.168.10.1
      sleep 3
      deploy 192.168.10.2
    else
      deploy $host
    fi
  elif [ $plan == "Bplan" ];then
  echoRed "您选择执行的是B计划"
    if [ $host == "all" ];then
      deploy 192.168.10.3
      sleep 3
      deploy 192.168.10.4
    else
      deploy $host
    fi
  fi
fi

最后来张完整截图:

5,验证效果。

先来看最神奇的一个小展示:

可以看到,效果已经如我们所需求的那样,同一套代码下,首先分出A计划与B计划,然后再每套计划之下,又能有不同的需求走向可供选择,堪称完美。

接下来真正的构建一下,真刀真枪的拉出来练一练。这里我只是为了演示,并没有连接代码库,不过每个地方的构建走向都有清晰的打印输出,所以也能够很容易看出效果。

  • 首先来构建一下A计划的all主机,看看效果。
  • 通过构建日志可以看到,构建已经触及到A计划所囊括的两台主机了。

  • 再来构建一下B计划的all主机,看看效果。
  • 同样的效果,构建就走向了B计划囊括的两台主机了。

  • 最后构建一下B计划的第一台主机,看看效果。
  • 可见,各个流向都是通了的,这样,就把我们一开始的需求,使用一种优雅的方式,给实现了出来。


    转载:http://www.eryajf.net/2075.html

    © 2018 www.qingketang.net 鄂ICP备18027844号-1

    武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号

    微信登录

    扫码关注,全站教程免费播放

    发表评论 X

    登录成功
    开通VIP

    订单金额:

    支付金额:

    支付方式: