Gitlab与Jenkins构建CICD环境(扩展一)

一、Jenkins发布与回滚

 Jenkins的回滚有两种方式

 1、通过git来回滚

 Git 可以通过代码提交的ID号(前12位),就可以回到之前的状态(注意:需要安装gogs插件)

  流程图:发布过程与回滚过程

重新配置上次的 web-job 项目

设置构建历史保留数量(general => 丢弃旧的构建),这里设置为保留最近20个

设置参数化构建过程

设置构建脚本该脚本是确认是否回滚,如果回滚的话调用回滚命令


    #注意脚本的大小写
——————————————————————

case $status  in           
  Rollback)
    echo "-----本次操作为回滚,版本号为$version-----"
    git reset --hard $version
echo "-----回滚完成,打包中-----"  
    ;;
  *)
  exit
esa               


scp /var/lib/jenkins/workspace/web-job/index.html root@192.168.2.16:/var/www/html                       

 配置完成  保存  应用

 在gitlab上新建一个index.html

 开始构建

 构建成功   访问测试:192.168.2.16

 进行回滚操作,回滚时,去gitlab上查看commit_id

 回滚完成,再次进行访问测试:192.168.2.16

 2、通过发布时备份,回滚时选定备份文件进行回滚

流程图:发布与回滚流程(注意:该方法会比较耗磁盘存储,因为要备份)

使用上次的 web-job 项目进行配置

2.1、配置


case $status  in
  Deploy)
    echo "-----发布前进行打包备份-----"
echo "status:$status"
BACK_DIR=/var/lib/jenkins/workspace
    path="${BACK_DIR}/bak"   
    if [ -d $path ];
    then
        echo "The files is already  exists "
    else
        mkdir -p  $path
    fi
cd ${BACK_DIR}/${JOB_NAME}
#${JOB_NAME}=项目名称(test)
#${BUILD_NUMBER}=第几次构建
    tar czf ${JOB_NAME}-${BUILD_NUMBER}.tar.gz *
    mv ${JOB_NAME}-${BUILD_NUMBER}.tar.gz ${BACK_DIR}/bak
scp ${WORKSPACE}/*  root@192.168.2.16:/var/www/html/
    echo "Completin!"
;;
Rollback)
BACK_DIR=/var/lib/jenkins/workspace
cd ${BACK_DIR}/bak
tar xf ${JOB_NAME}-${version}.tar.gz
    scp ${BACK_DIR}/bak/index.html root@192.168.2.16:/var/www/html/
    rm -rf ${JOB_NAME}
;;
  *)
  exit
      ;;
esac             #注意修改地址或路径

设置完成  >> 应用  >>完成

先进行发布

发布前准备


[root@jenkins aaa]# git clone git@192.168.2.14:zs/web.git            
[root@jenkins aaa]# cd web            
[root@jenkins web]# git rm -rf test1               
......
[root@jenkins web]# git add .              
[root@jenkins web]# git commit -m "删除文件夹 "               
.....
[root@jenkins web]# git push -u origin main                  

 进行发布


[root@jenkins ~]# cd /var/lib/jenkins/workspace/bak              #在此路径中可以查看备份的文件,回滚会使用这里备份的文件
[root@jenkins bak]# ls
web-job-65.tar.gz

在此在修改index.html文件在进行发布

 中间发布过程省略(同之前的发布)

进行回滚

 进行访问

二、Jenkins邮箱报警

1.、配置邮件报警

 给 admin 设置一个邮箱

 测试完成会发送一个邮件

 测试完成  >>应用  >>保存

 Disable Extended Email Publisher:勾选后,邮件就不发送,看自己的情况喽,如果你想调试某些东西,又不想发邮件出去就可以勾选这个
Project Recipient List:收件人地址;多个收件人邮件地址用逗号进行分割;想使用全局默认配置的话,可以使用$DEFAULT_RECIPIENTS
Project Reply-To List:允许回复人的地址;想使用系统设置中的默认值的话,可以使用$DEFAULT_REPLYTO
Content Type:邮件文档的类型,可以设置HTML等格式
Default Subject:默认主题,也就是邮件标题;同理可以使用$DEFAULT_SUBJECT
Default Content:默认邮件内容;这里是关键
Attach Build Log:发送的邮件是否包含日志

 保存前修改一下脚本;正常发布是没有邮件的,修改完后保存

 三、Jenkins远程管理部署节点

 Jenkins的远程管理方式有:Shell shh、SSH Plugin、Ansible、Saltstack

1、Shell shh

在项目构建时,jenkins使用了Execute Shell直接对远程主机操作

如图

2.、SSH Plugin

用SSH 的插件  SSH、publish over ssh

 系统管理  >>  系统配置  >>  SSH remote hosts,配置好远程主机

测试成功后保存

 3、publish over ssh

系统管理  >> 系统配置  >> 

 设置完成后保存

 先进行访问

 修改index.html文件

 再次访问

 4、Ansible

安装ansible

 下载ansible:ansible.rar-其它文档类资源-CSDN下载


[root@jenkins ~]# vim /etc/yum.repos.d/centOS7.repo               
.......        
[ansible]
name=ansible
baseurl=file:///root/ansible
enabled=1
gpgcheck=0              

保存

[root@jenkins ~]# yum -y install ansible                    
....

[root@jenkins ~]# vim /etc/ansible/hosts                        
...........   添加到最后
...
[client]
192.168.2.16            

保存

 注意:如果没有做免登,需要免登做,从安装Ansible的那台机器往15和16做免登


[root@jenkins ~]# ansible client -m ping        #查看是否可以通信
192.168.2.16 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

新建一个测试的ansible-playbook


[root@jenkins ~]# mkdir -p /data/Ansible-playbook                  
[root@jenkins ~]# vim /data/Ansible-playbook/jenkins-mkdir.yml                

---
- hosts: client
  gather_facts: no
  tasks:
  - name: 创建alex目录
    file: path=/data/alex state=directory                

保存

需要安装插件: Ansible、Ansible Tower

新建一个项目

 保存完成后进行构建

 在Apache上查看


[root@Apache data]# ls
alex

问题:jenkins如何远程管理 节点1、节点2、节点3?

1、ssh(在服务器上做免登)
2、jenkins服务器上安装ssh插件
3、jenkins服务器上安装ansiblesaltstack插件,实现远程管理

 5、jenkins集群

jenkins作为一款实用且广泛实用的CI/CD工具,为大多数中小公司拿来即用。可当我们的业务和工程逐渐增多,它在构建和自动化任务方面的压力也越来越大

1、jenkins单节点的压力大
2、jenkins缺乏自动扩缩容,需要容器化部署
3、需要支持多环境的发布场景,把开发环境和测试环境集成在一个jenkins集群
4、管理Job不够灵活

需要安装 ssh、ssh agent、ssh build agents 插件

同步时间


[root@node1 ~]# yum -y install ntpdate                 
.....
[root@node1 ~]# ntpdate 192.168.2.14                  
16 Feb 22:02:51 ntpdate[5898]: step time server 192.168.2.14 offset -28799.374101 sec

安装JDK


[root@node1 ~]# tar zxvf jdk-8u202-linux-x64.tar.gz                  
[root@node1 ~]# mv jdk1.8.0_202 /usr/local/java/                
[root@node1 ~]# vim /etc/profile            
....
......   最后添加
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPAT                

保存

[root@node1 ~]# source /etc/profile             
[root@node1 ~]# java -version                       
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

安装Maven:


[root@node1 ~]# tar xf apache-maven-3.8.4-bin.tar.gz                      
[root@node1 ~]# mv apache-maven-3.8.4 maven              
[root@node1 ~]# ln -s /root/maven/bin/mvn /usr/bin/mvn            
[root@node1 ~]# vim /etc/profile                             

....在最后加入内容
..
export MAVEN_HOME=/root/maven
export PATH=$PATH:$MAVEN_HOME/bin          

保存

[root@node1 ~]# source /etc/profile                     

jenkinsweb界面:系统管理  >>  Configure Global Security-->TCP port for JNLP agent配置端口30000

 添加节点

 输入2.12的root密码

 分配任务到节点

注意: 如果要运行脚本及Ansible,需要在node1服务器上进行创建脚本或安装Ansible服务

 构建完成

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘浪初心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值