1. 首页
  2. DevOps

Jenkins持续集成

 
Jenkins是一个可扩展的持续集成引擎,是一个开源的Java软件项目。
持续集成(Continuous Integration,CI|CD)是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础,持续集成意义如下:
持续集成中的任何一个环节都是自动完成的,无需太多人工干预,有利于减少重复过程以节省时间、费用和工作量;
持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
 
Jenkins作用:
对于开发人员来说,只需负责网站代码的编写,不需要手动再对源码进行编译、打包、单元测试等工作,开发人员直接将写好的代码分支存放在GIT、SVN仓库即可。
对于运维人员来说,使用Jenkins自动部署,可以减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、手动更新。
对于测试人员来说,可以通过Jenkins进行代码测试、网站功能或者性能测试。
 
Jenkins持续集成组件:
自动构建过程JOB,JOB的功能主要是:获取GIT/SVN源码、自动编译、自动打包、部署分发和自动测试等;
源代码存储库,开发编写代码需上传至GIT、SVN代码库中,供Jenkins来获取;
Jenkins持续集成服务器,用于部署Jenkins UI、存放JOB工程、各种插件、编译打包的数据等。
 

部署Jenkins2.230
一、基于tomcat安装jenkins,首先要配置java环境,安装jdk。
下载jdk安装包,并解压:
https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html
tar zxf  jdk-8u171-linux-x64.tar.gz;mv /usr/local/jdk180171
vim /etc/profile,写入:
export JAVA_HOME=/usr/local/jdk180171
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
. /etc/profile
java -version ,查看到版本即可。
 
二、安装tomcat   
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz
tar xf apache-tomcat-9.0.8.tar.gz -C /usr/local/
cd /usr/local/
mv apache-tomcat-9.0.8/ tomcat908
 
三、安装jenkins
下载jenkins2.230.war包:
wget http://updates.jenkins-ci.org/download/war/2.230/jenkins.war
cd /usr/local/tomcat908/webapps ;rm -rf * ;mkdir ROOT
cd ROOT/ ; jar -xf /root/jenkins-2.230.war
/usr/local/tomcat908/bin/startup.sh
查看tomcat启动日志,没问题浏览器访问本机ip:8080访问
Jenkins持续集成
cat /root/.jenkins/secrets/initialAdminPassword ,获取管理员密码并继续,即可看到jenkins首页。
若选择安装中文插件,可点击左侧Manage Jenkins或在消息提示栏点击Manage Jenkins,选择Manage Plugins –> Available中搜索chinese即可进行插件安装。安装完成,重新加载网页,然后看到显示中文即可。
可在admin设置页面更新admin密码:123456,密码设置后可立即登出,用新密码登陆即可。
 
四、创建第一个freestyle工程test,并进行配置
添加代码仓库,git或者svn,我这里选择svn,但是看到源码管理项并没有,所以要安装Subversion插件,安装完成,进行Subversion配置,如下填写svn地址,添加Credentials凭据:
Jenkins持续集成
Jenkins持续集成
提写完成后,点击下方apply保存。
回到首页,点击右上方图标进行构建: Jenkins持续集成(构建图标如右)构建时可点击#1在控制台输出查看构建过程或构建完成后查看构建历史,可以在服务器查看workspace。
Jenkins持续集成
 
五、平台配置
1、安装maven
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar zxf apache-maven-3.3.9-bin.tar.gz  -C /usr/
vim /etc/profile    文件尾加入两行:
export MAVEN_HOME=/usr/apache-maven-3.3.9
export PATH=$PATH:/usr/apache-maven-3.3.9/bin
source  /etc/profile
mvn -v       检测daomaven版本即可。
 
2、设置环境变量
点击 Manage Jenkins –> Global Tool Configuration,
新建JDK,取消Install automatically,填写服务器jdk安装路径
Jenkins持续集成 
新建Maven,取消Install automatically,填写服务器mvn安装路径
Jenkins持续集成
由于我们采用Maven编译需要用到插件Maven Integration,所以要安装这个插件。Jenkins安装的插件在服务器中的目录:/root/.jenkins/plugins
 
3、构建一个Java Maven项目wzstyle:
还是使用svn作为代码仓库,在源码管理里填上仓库地址、Credentials。
保证项目仓库里必须有pom.xml文件。
Jenkins构建项目默认是需要做单元测试等这些,如果不需要做单元测试,可以配置Maven编译参数然如下:
选择Build –> Goals and options  并输入: clean install -Dmaven.test.skip=true  文件此处为maven自动编译、打包并跳过单元测试选项,最后apply,并点击构建图标。
通过以上步骤,即完成了wzstyle项目的创建。可以查看控制台输出:Finished:SUCCESS
 
4、项目自动化部署
将上一步构建的war包通过jenkins进行自动化部署到2台docker容器。
安装ansible,参考:https://www.wzstyle.cn/323.html
安装docker,参考:https://www.wzstyle.cn/503.html
docker pull lemonbar/centos6-ssh
docker images
docker run -itd –privileged -p 7001:8080  efd998bd6817
docker run -itd –privileged -p 7002:8080  efd998bd6817
docker ps
docker inspect [CONTAINER ID] | grep -i ipaddr
vim /etc/ansible/hosts 写入:
[jenkins-test]
172.17.0.2
172.17.0.3
 
做免秘钥认证:
ssh-keygen 一路回车
ssh-copy-id -i /root/.ssh/id_rsa.pub  172.17.0.2(密码是宿主机root密码)
ssh-copy-id -i /root/.ssh/id_rsa.pub  172.17.0.3
 
添加自动化shell:
在Post Steps –> Add post-build step –> Excute shell ,添加你想要做的动作:
ansible jenkins-test -m copy -a “src=/root/apache-tomcat-9.0.8.tar.gz dest=/root/”
ansible jenkins-test -m copy -a “src=/root/jdk-8u171-linux-x64.tar.gz dest=/root/”
ansible jenkins-test -m shell -a “yum install -y tar gzip*”
ansible jenkins-test -m shell -a “cd /root;tar zxf apache-tomcat-9.0.8.tar.gz”
ansible jenkins-test -m shell -a “cd /root;tar zxf jdk-8u171-linux-x64.tar.gz”
ansible jenkins-test -m shell -a “cd /root;mkdir -p /usr/java/;mv jdk1.8.0_171 /usr/java/;mv apache-tomcat-9.0.8 /usr/local/tomcat/”
ansible jenkins-test -m shell -a “sed -i ‘/JAVA_HOME/d;/CLASSPATH/d’ /etc/profile”
ansible jenkins-test -m shell -a “echo -e ‘export JAVA_HOME=/usr/java/jdk1.8.0_171\nexport CLASSPATH=\.\:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar’ >>/etc/profile”
ansible jenkins-test -m shell -a “rm -rf /usr/local/tomcat/webapps/*;mkdir /usr/local/tomcat/webapps/ROOT”
ansible jenkins-test -m copy  -a “src=/root/.jenkins/workspace/wzstyle/target/edu.war dest=/usr/local/tomcat/webapps/ROOT/”
ansible jenkins-test -m shell -a “cd /usr/local/tomcat/webapps/ROOT;source /etc/profile ;\$JAVA_HOME/bin/jar -xf edu.war”
ansible jenkins-test -m shell -a “source /etc/profile;set -m;/usr/local/tomcat/bin/shutdown.sh”
ansible jenkins-test -m shell -a “source /etc/profile;sleep 2;set -m;/usr/local/tomcat/bin/startup.sh”
然后重新构建,可在控制台输出查看构建过程,有问题及时解决,最后构建成功。
访问宿主机ip:7001/7002  或者通过 dockerip:8080可访问到部署的java项目。
Jenkins持续集成
 
六、Jenkins多实例配置
Manage Jenkins  –> Manage Nodes and Clouds –> 新建节点 –> 填写节点名称,选择固定节点Permanent Agent,填写,保存。
Jenkins持续集成
Jenkins持续集成
点击Launch和agent.jar下载这两个文件,上传到slave1节点服务器的/home/jenkins目录。
slave1节点运行需要提供java环境,需要提前安装好jdk;
复制命令在slave1节点执行,看到Connected即可。
java -jar agent.jar -jnlpUrl http://172.20.10.5:8080/computer/slave1/slave-agent.jnlp -secret 45da1a6194f5b640b9e17be5e0a67722d77bc1593e3ef802de5bb056cfd9eeb7 -workDir “/home/jenkins”  &
设置master和slave1并发构建,需要在job工程General里设置在必要的时候并发构建,当有多个工程需要构建时会自动并发构建。
 

配置节点解释:
名称:定义slave的唯一名称标识,可以是任意字符串。
描述:自定义关于slave的描述
执行器数量:这个值控制着Jenkins并发构建的数量,因此这个值会影响Jenkins系统的负载压力,使用处理器个数作为其值会是比较好的选择。
增大这个值会使每个构建的运行时间更长,但是这能够增大整体的构建数量,因为当一个项目在等待I/O时它允许CPU去构建另一个项目。
设置这个值为0对于从Jenkins移除一个失效的从节点非常有用,并且不会丢失配置信息
远程工作目录:指定slave的工作目录路径(提前在slave节点建好路径);设置为绝对路径。如果目录不存在,会自动创建目录。必须对该目录有读写权限,不然会报错。
标签:标记(又叫做标签)用来对多节点分组。可以不填。
用法:
尽可能的使用这个节点:这是默认和常用的设置,在这种模式下,Jenkins会尽可能的使用这个节点,任何时候如果一个构建能使用这个节点构建,那么Jenkins就会使用它。
只允许运行绑定到这台机器的Job:Jenkins只会构建哪些分配到这台机器的Job。这允许一个节点专门保留给某种类型的Job,例如,在Jenkins上连续的执行测试,你可以设置执行者数量为1,那么同一时间就只会有一个构建, 一个实行者不会阻止其它构建,其它构建会在另外的节点运行
启用方式:
  launch agent agents via ssh:通过ssh启动代理
  launch agent by connecting it to the master:启动代理程序,将其连接到主服务器
  launch agent via execution of command on the master:通过执行主机上的命令来启动代理
  let jenkins control this windows agent as a windows service:让jenkins作为一个windows服务来控制这个windows代理
可用性:
Keep this agent online  as much as possible     尽可能让这个代理保持在线
Bring this agent online according to aschedule  让这个代理按照时间表在线
Bring this agent online when in demand,and take offline wheh idle 需要时将此代理在线,空闲时脱机
节点属性:
Environment variables:配置环境变量(可以在脚本中引用)。
Tool Locations:工具的目录。可以替换系统设置的各种工具目录。如:JDK目录、Ant目录、Maven目录等。好处就是在不更改Job配置的情况下,不同环境(如:Windows和Linux)Job配置通用。
 
官网: https://www.jenkins.io/zh/
 

原创文章,作者:wz,如若转载,请注明出处:https://www.wzstyle.cn/537.html

发表评论

邮箱地址不会被公开。 必填项已用*标注