Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 知足任何项目的须要。
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码以后,马上进行构建、(单元)测试。
CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。
linux
【实验环境】:
主机server1:192.168.43.10 gitlab开启
主机server3:192.168.43.12用来安装jenkinsgit
安装jenkins须要准备jdk和jenkins的rpm包。
软件下载:https://jenkins.io/zh/download/
国内镜像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/github
安装jenkins:web
rpm -ivh jdk-8u181-linux-x64.rpm ##先安装jdk rpm -ivh jenkins-2.225-1.1.noarch.rpm ##安装jenkins
systemctl start jenkins ##打开jenkins服务
浏览器访问一下:http://192.168.43.12:8080
安装jenkins须要安装一些插件,若是用他自带的插件源,下载会很慢,容易卡住。因此咱们须要更新插件源:
首先咱们须要保证虚拟机可以上网:
docker
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml ##再编辑这个更新中心
浏览器中咱们要使用初始密码登录:
shell
cd /var/lib/jenkins/updates ##进入到这个目录中 ls ##查看一下里面的文件 sed -i.bak 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json ##将default.json文件中默认的下载地址用清华下载站给替换掉 sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json ##将default.json文件中的谷歌浏览器访问用baidu.com替换掉
安装插件,使用默认推荐的就好。
json
新建一个自由风格的任务:
添加访问git的私钥:
定义轮询间隔,有更新时触发jenkins构建
构建选择执行shell命令
git提交代码到gitlab上,jenkins轮询检测到代码仓库的变动,触发构建。
用容器化来构建
首先须要在server3上面安装docker容器
vim
systemctl start docker ##再开启docker
docker info ##查看容器信息
cd /etc/sysctl.d
vim bridge.conf
sysctl --system ##使刚才的设置生效一下
咱们在server1的demo工做目录下上建立一个Dockerfile文件:
这时因为git向gitlab推送了新的内容,jenkins轮询检测到代码仓库的变动,触发构建。
上面能看到Dokcerfille文件已经在server3的/var/lib/jenkins/workspace/demo/目录下了。如今咱们还须要让jenkins自动构建docker镜像。
由于上面叫输入docker仓库,因此这里咱们先来搭建一个docker的私有仓库。浏览器
docker pull registry ##首先在github上拉取一个私有仓库 dcoker images ##查看一下docker的镜像 docker run -d --name registry -p 5000:5000 registry ##运行registry容器,-d是打入后台,-p 是作一个端口映射 netstat -nplt ##查看一下端口 docker ps ##查看一下正在运行的容器
上面docker私有仓库就搭建好了,这时咱们能够向里面上传镜像。
这时须要修改docker.sock权限,否则jenkins没法直接执行docker命令:bash
chmod 777 /var/run/docker.sock
咱们来建立一个docker任务。
visudo ##编辑这个