jenkins
一, 简介:
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能
持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置、邮件功能使用,
一个自动构建过程,包括自动编译、分发、部署和测试
一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如SVN、GIT代码库
一个jenkins持续集成服务器就是一个配置简单和使用方便的持续集成服务器
二, 安装
由于jenkins是使用java代码开发的,所以我们需要安装java容器才能运行jenkins,又因为java的web服务器用的是tomcat,所以我们要安装JDK+Tomcat
yum -y install java-1.8.0-openjdk.x86_64 #安装1.8jdk cd /opt #进入opt目录 wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz #获取tomcat7的安装包 tar xvf apache-tomcat-7.0.79.tar.gz #解压tomcat7的解压包 mkdir /usr/local/tomcat -p #在环境变量文件夹下创建tomcat文件夹
mkdir -p /usr/local/tomcat
mv apache-tomcat-7.0.79/* /usr/local/tomcat/ #将解压出来的tomcat文件夹的所有内容移到/usr/local/tomcat目录下 cd /opt #跳转到opt目录 wget http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.60-1.1.noarch.rpm #获取django安装包 rpm -ivh jenkins-2.60-1.1.noarch.rpm #安装Jenkins安装包 /etc/init.d/jenkins start #启动Jenkins /usr/local/tomcat/bin/startup.sh #启动tomcat
因为jenkins使用8080端口,所以请监控8080的端口是否起来,判断jenkins又没有启动成功.
[root@centos1 bin]# netstat -tnlp | grep 8080 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 :::8080 :::* LISTEN 1502/java
或者直接打开网址: http://IP:8080
三, 安装插件
插件管理
如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json
因为我们只需要构建python项目 所以我们这边只需要的插件
git plugin
python plugin
pipeline
四, 创建项目
只要收到一个push请求 就会发送一个post的请求给jenkins**
1, 创建任务 名字 master-build 自由代码风格
2, 丢弃旧的构建 (保留7天,最大构建的最大数100)
3, 码云获取HTTP地址 https://git.oschina.net/byz11211993/ceshi.git
4, Jenkins中配置码云中的地址,并添加秘钥
ssh-keygen -t rsa -C "jimzhou@qq.com" 生成公钥和私钥 cat ~/.ssh/id_rsa.pub 发送给码云 cat ~/.ssh/id_rsa 写入到jenkins
5, 测试项目是否搭建成功
第一步 创建项目 创建任务 名字 master-build 自由代码风格 1. 丢弃旧的构建 (保留7天,最大构建的最大数100) 2. 源码管理 选择git 如果我们需要从码云拉取代码那么我们需要把私钥放到jenkins 公钥放到码云上面去 这样我们就可以拉取我们的代码了
五, 创建一个Django项目并测试同步
1, 本地创建一个Django项目并push到git上
#用git将你的新建项目push到码云,并且在linux下载 python manage.py runserver 0.0.0.0:8000 #在浏览器输入网址查看是否成功显示 http://虚拟机ip:8000
2、继续配置jenkins任务
* * * * * 在master-build中创建触发器,设定1分钟执行一次 poll SCM(日常表 可以根据时间来判断) H/2 * * * * (2分钟检查一下版本库 如果有更新就不触发 如果没有更新就不触发) 注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 20 * * * 表示“在任何年任何月任何天20点0分”进行构建
#构建 execute shell cd xxx python manage.py test #进入xxx目录并执行测试脚本 #构建后操作 #选择 email notifications #输入你的邮箱 选中每次不稳定的构建都发送邮件
回到工作区,选择立即构建
在Console Output 控制台输出
如果出现以下内容,说明成功了
3、配置触发器同步更新服务器代码
增加一个任务 master deploy
其他都不需要改 只需要改2个地方
3.1 第一个地方 构建触发器
Build after other projects are built (勾选这一项)
projects to watch (master_build) 当前一个动作构建成功后我才触发
3.2第二个地方 构建
cd xxx BUILD_ID=DONTKILLME nohup python manage.py runserver 0.0.0.0:8000 & BUILD_ID=DONTKILLME : 在jenkins里面在后台运行的程序都会被jenkins自动杀死 所以需要加上BUILDID这个参数 加了这个参数你的程序就不会被杀死
4、修改本地工程index.html代码
修改完成后,push提交到git。
5、Jenkins同步代码查看
等待Jenkins每分钟刷新
当看到构建队列中存在构建时,等待构建完成刷新网页,查看我们的虚拟机上项目代码是否更新完成。
五、免密码登录
$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令