Jenkins学习
jkenins
能看我写这篇文章的 我相信你百分之80 90是做运维的 那么下面我就来说说为什么要学习jkenins。
传统的网站部署,大家在运维过程中,网站部署是运维的工作之一,网站部署的流程大致分为:
需求分析—原型设计—开发代码—提交测试—内网部署—确认上线—备份数据—外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚。
(如下图所示)
列举一个例子,你想更改一个网站的某一个图片怎么操作呢;
传统网站更新方法:LAMP网站
1)找到网站域名对应的IP服务器;
Ping 域名 得到IP服务器:
2)通过CRT、xshell登录IP服务器,用户名,密码;
使用netstat -tnpl |grep 80 找到80对应的服务器名称 进程PID;
ps -ef |grep httpd
进程ID号是否和服务名字一样 判断是APACHE
在进入Apache配置文件搜索发布目录(DocumentRoot)
一般默认是 /var/www/html
在网站中右键搜索图片位置
然后在发布目录下面搜索图片位置 替换图片之前 做备份 然后CP命令,静态文件不用重启Apache服务器。
图片上传服务器使用rz命令或者第三方工具都可以 WCP等等。 rz命令没有的 => yum install lrzsz -y 安装一下
下面给大家分享一件事情 之前我在工作中,开发那边一天总发邮件让我更新内容 或者打补丁 追加版本 手动弄更新 很烦很累,每天都在搬砖,后来我就想用不用使用自动化工具那!
1) 通过shell脚本自动更新;
2) 通过批量工具 saltstack、ansible、for、Rsync、Sersync;
3) jkenins 持续集成,完成自动化部署;
jkenins 是一个可扩展持续集成引擎、框架。
使用jkenins带来的好处:
1) 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可。
2) 运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新。
3) 测试人员:可以通过jenkins进行简单的代码及网站测试。
持续集成组件:
1) 一个自动构建过程,包括自动编译、分发、部署和测试;
2) 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如SVN、GIT代码库;
3) 一个jenkins持续集成服务器。如下135.57.11.203服务器就是一个配置简单和使用方便的持续集成服务器。
下面进入正题 jkenins安装部署:
地址http://mirrors.jenkins-ci.org/下载适合的Jenkins版本。
Linux稳定版的Jenkins地址为:http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/war-stable/1.651.2/jenkins.war
由于Jenkins属于一个JAVA 代码,需要java容器才能运行jenkins,所以需要安装JDK+Tomcat,方法如下
1) JAVA JDK安装
#下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz
tar -xzf jdk-7u25-linux-x64.tar.gz ;mkdir -p /usr/java/ ;mv jdk1.7.0_25/ /usr/java/ 下。
#然后配置环境变量,这样可以任何地方引用jdk,如下配置:
#vi /etc/profile 最后面加入以下语句:
export JAVA_HOME=/usr/java/jdk1.7.0_25
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
#source /etc/profile #使环境变量马上生效
#java --version #查看java版本,看到jdk1.7.0_25版本即代表java jdk安装成功。
1) Tomcat安装配置
#官方网站下载tomcat 6.0.30或者其他版本:
wget
http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-6/v6.0.45/bin/apache-tomcat-6.0.45.tar.gz
tar xzf apache-tomcat-6.0.45.tar.gz
#直接解压就可以使用,解压完成执行:
mv apache-tomcat-6.0.45 /usr/local/tomcat
把得到的war包直接扔到tomcat下,启动tomcat,Jenkins就安装完毕!
rm -rf /usr/local/tomcat/webapps/* ;
mkdir -p /usr/local/tomcat/webapps/ROOT/;
mv jenkins.war /usr/local/tomcat/webapps/ROOT/;
1. Jenkins项目实战
1、打开http://123.57.11.203:8080 /,第一次进入里面没有数据,我们需要创建job,我们这有1个项目,需要创建1个job。
2、点击左上角的new job,在new job页面需要选择job的类型,Jenkins支持几种类型,我们选择“构建一个maven2/3项目”
3、点击OK按钮后,进会进入详细配置界面,详细配置界面的配置项很多,不过不用怕,大部分使用默认配置就可以了,下面就说说我们需要修改的几个地方:
3.1)Source Code Management
因为我们使用SVN管理源码,所以这里选择Subversion,并在Repository URL中输入我们的SVN地址:
输入SVN库的URL地址后,Jenkins会自动验证地址,并给予提示
3.2)配置自动构建的计划,假设我们想让项目中每天12点和晚上8点自动构建一次,只需要在Build Triggers中选择Build periodically,并在Schedule中输入 0 12,20 * * *。
我配置的是每晚8点自动构建
注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 12,20 * * * 表示“在任何年任何月任何天的12和20点0分”进行构建。
3.3)配置到这里,可能有人发现在Build配置节点,有红色错误信息,提示
Jenkins needs to know where your Maven2 is installed.
Please do so from the system configuration.
如图所示:
这是因为Jenkins找不到maven的原因,点击"system configuration",是system configuration的maven配置中添加maven目录就OK,如下图:
我设置了JRE 7和MAVEN的安装目录。
点击左下角的SAVE按钮,保存设置。
3.4)保存好所有配置后,我们第1个job就算是完成了。
1. 程序构建
在经过上面的配置后,回到Jenkins首页,在首页可以看到刚才添加的1个job,如下图:
点击某1个job后后面的"Schedule a build"图片手动构建,点击完后,会在左边的Build Queue或者Build Executor Status 显示正在构建的任务,在自动构建完后,刷新页面,就可以看到构建结果了,如何某个项目构建失败,点击项目后面的构建数字(从1开始递增)进入项目的"Console Output "可以查看项目构建失败的原因。当然我们也可以配置把构建失败的结果发到邮箱。
四、构建完成
1. Jenkins脚本自动化
点击工程名称-配置-构建后操作-设置Jenkins编译打包完后,war包存放的位置,如下图:
1) 然后输入如下配置:**/target/*.war
1) 如上-构建触发器-一个构建步骤,选择Add-post-build step-Excute shell
1) 然后把脚本内容写入即可
代码如下:
rm -rf /root/.jenkins/workspace/jfedu/target/edu.war
cp /root/.jenkins/workspace/jfedu/target/edu.war /root/.jenkins/jobs/jfedu/builds/lastSuccessfulBuild/archive/target/
ssh root@121.42.183.93 'bash -x -s' < /data/sh/auto_deploy.sh
脚本内容如下:
#!/bin/bash
#Auto deploy Tomcat for jenkins perf
#by author wugk 2016-07-06
export JAVA_HOME=/usr/java/jdk1.6.0_25
TOMCAT_PID=`/usr/sbin/lsof -n -P -t -i :10013`
TOMCAT_DIR="/usr/local/tomcat/"
FILES="jfedu.war"
DES_DIR="/export/data/tomcatRoot/ptest.jd.com/"
DES_URL="http://123.57.11.203:8080/job/Ptest_Online/lastSuccessfulBuild/target"
BAK_DIR="/export/backup/`date +%Y%m%d-%H%M`"
[ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID
cd $DES_DIR
rm -rf $FILES
mkdir -p $BAK_DIR;\cp -a $DES_DIR/* $BAK_DIR/
rm -rf $DES_DIR/*
wget $DES_URL/$FILES
/usr/java/jdk1.6.0_25/bin/jar -xvf $FILES
####################
cd $TOMCAT_DIR;rm -rf work
/bin/sh $TOMCAT_DIR/bin/start.sh
sleep 10
tail -n 50 $TOMCAT_DIR/logs/catalina.out