DevOps-Jenkins 分布式实现代码部署和回滚
jenkins 分布式
在众多 Job 的场景下,单台 jenkins master 同时执行代码 clone、编译、打包及构建,其性能可能会出现瓶颈从而会影响代码部署效率,影响 jenkins 官方提供了 jenkins 分布式构建,将众多 job 分散运行到不同的 jenkins slave 节点,大幅提高并行 job 的处理能力。
配置 slave 节点 java 环境:
slave 服务器创建工作目录,如果 slave 需要执行编译 job,则也需要配置 java 环境并且安装 git、svn、maven 等与 master 相同的基础运行环境,另外也要创建与 master 相同的数据目录,因为脚本中调用的路径只有相对一 master 的一个路径,此路径在master 与各 node 节点必须保持一致。
1. 由主节点下发构建命令,agent执行构建
2. jenkins agent 配置到gitlab免密拉取代码;
3. 多机房 模式
slave创建工作目录,必须和master保持一致
mkdir -p /var/lib/jenkins
配置java环境
yum -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel
添加 slave 节点
Jenkins—系统管理—节点管理—新建节点
部分 jenkins slave 信息
启动方式选择SSH,选择不校验证书
添加 slave 认证凭据
jenkins slave 创建日志
验证 slave 状态
验证 slave 进程状态
拷贝jenkin slave 公钥到web服务器
[root@jenkins-slave-1 ~]# ssh-copy-id www@192.168.0.142 [root@jenkins-slave-1 ~]# ssh-copy-id www@192.168.0.79 [root@jenkins-slave-2 ~]# ssh-copy-id www@192.168.0.142 [root@jenkins-slave-2 ~]# ssh-copy-id www@192.168.0.79
创建job运行验证
Started by user jenkinsadmin Running as SYSTEM Building remotely on jenkins-slave-1 (jenkin-slave1) in workspace /var/lib/jenkins/workspace/haha //可以看到已经调度任务到了slave1 [haha] $ /bin/sh -xe /tmp/jenkins4715630127033057049.sh + echo haha haha Finished: SUCCESS
代码回滚
cd /var/lib/jenkins/workspace/linux38-web1-master ; rm -rf myapp.tar.gz ; ; git reaet --hard HEAD^ ; tar -zcvf myapp.tar.gz ./* //回滚到上个版本 scp myapp.tar.gz www@web1:/data/tomcat/tomcat_appdir ssh www@web1 "bash /opt/apps/tomcat.sh stop" ssh www@web1 "cd /data/tomcat/tomcat_appdir ; rm -rf /data/tomcat/tomcat_webapps/myapp/* ; tar -xvf /data/tomcat/tomcat_appdir/myapp.tar.gz -C /data/tomcat/tomcat_webapps/myapp" ssh www@web1 "bash /opt/apps/tomcat.sh start"
越学越感到自己的无知