配置启动docker
~]# curl -o /etc/yum.repos.d/docker.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@jenkins ~]# yum -y install docker-ce-19.03.7-3.el7
[root@jenkins ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
[root@jenkins ~]# systemctl daemon-reload
[root@jenkins ~]# systemctl restart docker
[root@jenkins ~]# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
[root@jenkins ~]# modprobe br_netfilter
[root@jenkins ~]# sysctl --system
配置启动jenkins
[root@jenkins ~]# tar zxf jdk-8u45-linux-x64.tar.gz
[root@jenkins ~]# mv jdk1.8.0_45 /usr/local/jdk
[root@jenkins ~]# tar zxf apache-maven-3.5.0-bin.tar.gz
[root@jenkins ~]# mv apache-maven-3.5.0 /usr/local/maven
[root@jenkins ~]# docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -u root -v /opt/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/local/maven:/usr/local/maven -v /usr/local/jdk:/usr/local/jdk -v /etc/localtime:/etc/localtime --restart=always jenkins/jenkins:2.328
[root@jenkins ~]# cat /opt/jenkins_home/secrets/initialAdminPassword
98db0051fb214e6b8f59623ad5870528
流水线试用
pipeline语法的试用
通过git仓库控制pipeline脚本版本
[root@git ~]# mkdir git/myproject/
[root@git ~]# git --bare init git/myproject/
[root@web ~]# git clone root@192.168.1.18:/root/git/myproject/
[root@web ~]# cd myproject/
[root@web myproject]# ls
[root@web myproject]# echo 'building...' > pipeline-v1
[root@web myproject]# git add .
[root@web myproject]# git commit -m "v1"
[root@web myproject]# git push origin master
此时你只需要修改代码仓里的pipeline-v1里的信息再提交,就可以完成修改后的构建
你也可以创建别的文件提交,然后修改pipeline里的配置实现,修改后的构建
[root@web myproject]# cp pipeline-v1 pipeline-v2
[root@web myproject]# vim pipeline-v2 #修改为echo '22222building...'
[root@web myproject]# git add .
[root@web myproject]# git commit -m "v2"
[root@web myproject]# git push origin master
定义pipeline执行的节点
[root@web myproject]# cat pipeline-v2
node ('web'){
def mvnHome
[root@web myproject]# git add .
[root@web myproject]# git commit -m "v2"
[root@web myproject]# git push origin master
jenkins双向备份;高可用部署;
1、通过keepalived实现jenkins主备,一个虚拟IP后面两个物理IP。
2、通过inotify+rsync实现master的jobs目录、workspace(可以不同步)同步到slave上的jobs、workspace,这样切换到slave的jenkins,才能保证任务是是相同的。
务必保持两个Jenkins版本是相同的,不然容易出现Jenkins插件兼容性问题。
后来把整个Jenkins目录都备份了,查看yum安装的jenkins安装目录为/var/lib/jenkins,把这个目录都备份后,从主jenkins切换到备jenkins后,用户感知到的前端是完全相同的,其中包括每个Jobs的配置,slave节点配置,Jenkins的全局配置等等,其实就是同一个Jenkins,这样保持了主备的一致性。对主jenkins的一些更改,自然同步到备jenkins上。