热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jenkins+pipeline+参数构建+人工干预确定

Jenkins+pipeline+参数构建+人工干预实现了以下功能1.可以选择环境,单选;可以选择需要发布的项目,多选2.发布过程可视化3.可以人工干预是否继续发布。
  Jenkins+pipeline+参数构建+人工干预 实现了以下功能

1. 可以选择环境,单选;可以选择需要发布的项目,多选

2.发布过程可视化

3. 可以人工干预是否继续发布。

初始化配置需要很久,比如拉镜像这些事情,我可以提前操作。配置做好之后,等到下班时间,再进行发布操作。有时候会遇到,我初始化配置做好之后,测试通知还有变动。我可以人工干预,不进行继续发布。再次进行配置初始化后再发布。

4.查看日志,鼠标停留在蓝色进度图时,会自动出现Log提示按钮

 

5.点击Log,可以看日志。

 

6.点击日志里面的文字,可以看日志详细情况

 

 

7.日志详细情况

实现上述功能的步骤

1.安装启动Jenkins:我以容器的方式启动。

docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -m 1500M -v /data/jenkins_home/:/var/jenkins_home -v /usr/bin/dos2unix:/usr/bin/dos2unix  -v /var/run/docker.sock:/var/run/docker.sock  -v $(which docker):/usr/bin/docker -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime -v /etc/timezone:/etc/timezone jenkins

 

2.安装插件:Extended Choice Parameter Plug-In 和 Pipeline

3.自己按照工作环境进行shell脚本编写。

初始化配置的脚本:

[root@cloud_250 shell]# cat init_configure_choice.sh 
#!/bin/bash

#对比文件,获取需要发布的文件
ID1=`git log -1|grep commit|awk '{print $2}'`
ID2=`git log -2|grep commit|awk '{print $2}'|tail -n 1`
echo "本次有变更的配置是:"
git diff ${ID1} ${ID2}|grep diff|grep "template/stack"|awk -F"/" '{print $5}'

uptime=`date +%Y-%m-%d" "%H:%M`
echo "$WORKSPACE/template/pull_images_and_check_md5.sh"
sh $WORKSPACE/template/pull_images_and_check_md5.sh

if [ "$?" != "0" ];then
    exit 251
fi
#调用Jenkins中选择的环境变量,注意要与Jenkins上配置的名称一样,我在截图中会框出来。
/usr/bin/python conf_to_stack.py --type=${Environment}

cat $WORKSPACE/template/address.txt  > $WORKSPACE/${Environment}/address.txt

git add .
git status

iplist_zyx_p="192.168...."
iplist_zyx="192.168.5......"
iplist_emp="192.168.5X.XX"
#根据环境名称确定ip列表,这个zyx,zyx_p是对应Jenkins中可以选择的环境参数选项。
if [ "${Environment}" = "zyx_p" ];then
    iplist=$iplist_zyx_p
fi
if [ "${Environment}" = "emp" ];then
    iplist=$iplist_emp
fi

if [ "${Environment}" = "zyx" ];then
    iplist=$iplist_zyx
fi

#将更新内容同步到服务器,拉取镜像
for ip in $iplist;
    do
        echo $ip 
        ssh root@$ip "/usr/bin/rm -rf /data/git/${Environment}/*"
        scp -r $WORKSPACE/${Environment}/ root@$ip:/data/git/ 
        ssh root@$ip "cd /data/git/${Environment};/usr/bin/sh /data/git/${Environment}/pull_images.sh"
        return=`ssh root@$ip "/usr/bin/cat /data/git/${Environment}/return"`
        if [ "${return}" != "0" ];then
            exit $return
        else
            continue
        fi
    done

部署脚本:

[root@cloud_250 shell]# cat deploy_choice.sh 
#!/bin/bash
#由于Jenkins提供的选择的多个项目名称会以“name1,name2,name3”的方式提供,我们需要进行字符串切割处理,去掉逗号,和双引号。
projectlist=`echo ${ProjectName} | sed -r 's/,/ /g'| sed -r 's/"/ /g'`
#根据环境进行判断,选择需要发布的服务器节点。
if [ "${Environment}" = "zyx_p" ];then
    ipnode=192.168.x
fi

if [ "${Environment}" = "zyx" ];then
    ipnode=192.168.x
fi

if [ "${Environment}" = "emp" ];then
    ipnode=192.168.x
fi
#发布,ssh远程到服务器上进行启动服务
for NAME in ${projectlist};
do
ssh root@$ipnode "docker stack deploy -c /data/git/$Environment/stack_$NAME.yaml $NAME"
sleep 30s
done

3. Jenkins上创建一个pipeline的项目

 

红色框框,ProjectName 是会作为变量传给shell脚本的。check Boxes 类型是表示能选择多个项目。delimiter 填写 “,”  表示项目名称以逗号隔开。

value ,填写项目名称,并且以“,”隔开。

添加pipeline的脚本:

 

 

 

node {

   stage('初始化配置 ') { // for display purposes
        git 'git@192.168.0.75:/data/git/zyx_t'
        sh "/var/jenkins_home/shell/init_configure_choice.sh" 调用初始化配置的shell脚本
   }

}
#人工干预是否继续发布。
stage '确定是否发布'
input 'Do you approve deployment?'
#确定发布后,在进行部署

node{
       stage('部署') {
        sh "/var/jenkins_home/shell/deploy_choice.sh"   调用发布的shell脚本
        
   }
}

 


推荐阅读
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • LINUX学习之centos7营救模式
    今天卸载软件的时候,不小心把GNOME的一些组件给卸了,导致桌面无法正常开启,会卡在启动过程中,而我的开机启动模式又是设置为图形界面,所以一开LINUX就卡住了,进入不了命令行界面 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
author-avatar
ayuanliang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有