目前主流网站部署方法,通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
简单来说方便如下人员:
网站发布的流程
持续、自动地构建/测试软件项目。
监控一些定时执行的任务。
jenkins 官网:https://jenkins.io/
jenkins wiki 网址: https://wiki.jenkins.io/display/JENKINS
jenkins中文文档: http://www.jenkins.org.cn/
方法1:WAR包
步骤简介:
wget在官方下载jenkins.war的包到tomcat下
修改tomcat的server.xml配置,重启tomcat
调整防火墙规则,允许端口访问
浏览器访问:http://x.x.x.x:port
方法2:YUM安装
步骤简介:
添加官方的rpm包源,进行yum安装
编辑jenkins的/etc/init.d/jenkins程序文件,添加java路径
编辑jenkins的/etc/sysconfig/jenkins配置文件,修改端口、系统运行账户
编辑/etc/profiles文件添加jenkins的环境变量
启动jenkins服务service jenkins start
浏览器访问:http://x.x.x.x:port
WAR包安装
优点:
只有一个war包,轻量级部署
配置过程简单,无需额外配置
对于已经部署好tomcat+jdk环境的Server,可以在10分钟内就搭建好Jenkins平台,适用于快速部署和使用;
适合新手,或者对Linux不太熟的人员
缺点:
因为是官方直接打包好的.war包,修改配置容易出现报错
运行不稳定,增加插件、修改权限等,很容易崩溃
重启jenkins服务不太方便(java -jar /xx/xx/jenkins.war --httpPort=8080)
YUM安装
优点:
对于熟悉Linux服务配置的人员来说,轻车熟路的配置流程
可以根据Server环境,定制化的修改jenkins配置文件
可以很方便的查看服务运行状态(state)、日志、排错、重启服务
适用于Linux老司机
缺点:
配置的过程稍复杂,要修改的文件和参数
反复查看日志中的ERROR,根据模糊的错误信息,调整环境和配置
对于Linux新手来说,配置起来有点难,Troubleshouting有点懵
2.利用tomcat来部署jenkins
部署tomcat
(1)安装jdk
这里的jdk 使用的是jdk-8u77-linux-x64.rpm
rpm -ivh jdk-8u77-linux-x64.rpm
(2)环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_77/ # JAVA_HOME变两个路径
export JAVA_BIN=/usr/java/jdk1.8.0_77/bin
export PATH=${JAVA_HOME}bin:$PATH # 环境变量
[root@caosm03 caosm]# java -version # 查看版本
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
(3)部署tomcat
这里使用的tomcat apache-tomcat-8.0.30.tar.gz
[root@caosm03]# tar -zxvf apache-tomcat-8.0.30.tar.gz -C /usr/local
[root@caosm03 local]# mv apache-tomcat-8.0.30 tomcat
[root@caosm03 local]# cd /usr/local/tomcat/bin/
[root@caosm03 bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/src/tomcat
[2017/12/13 15:55:02] Using CATALINA_HOME: /usr/local/tomcat
[2017/12/13 15:55:02] Using CATALINA_TMPDIR: /usr/local/tomcat/temp
[2017/12/13 15:55:02] Using JRE_HOME: /usr/java/jdk-1.8.0.77/
[2017/12/13 15:55:02] Using CLASSPATH: /usr/local/src/tomcat/bin/bootstrap.jar:/usr/local/src/tomcat/bin/tomcat-juli.jar
启动报错:The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path
解决方案:
把这一句注释掉 不影响使用,解决这个问题非常蛋疼!!!
对端口进行修改 我这里改成了8090
对server.xml 进行修改
修改端口后要进行重启tomcat
启动进行测试:http://192.168.24.130:8090 启动正常
(4)准备安装包,安装jenkins
这里使用的安装是从官网下载的war 包 https://jenkins.io/
把安装包放到webapp下面
[root@caosm03 webapps]# ls
docs examples host-manager jenkins jenkins.war manager ROOT
[root@caosm03 webapps]#root@caosm03 webapps]#java -jar jenkins.war --httpPort=8090 &
进行启动 指定端口
直接访问即可!
http://192.168.24.130:8090
默认用户admin
密码:[root@caosm03 ~]# cat /root/.jenkins/secrets/initialAdminPassword
fb0cb152dc454586a217c46710ecc242
安装中文插件
https://updates.jenkins.io/download/plugins/locale/1.2
在/jenkins/pluginManager/advanced/ 上传插件,点击上传 ,重新刷新,Jenkins 恢复中文界面
http://updates.jenkins-ci.org/download/plugins/
安装插件 可选插件报错
这里需要选择高级
升级站点: http://updates.jenkins-ci.org/update-center.json 立即获取
重新启动tomcat
相关配置
# Jenkins安装目录
/var/lib/jenkins
# Jenkins配置文件地址
cat /etc/sysconfig/jenkins
# 三个比较重要的配置
JENKINS_HOME是Jenkins的主目录,Jenkins工作的目录都放在这里,Jenkins储存文件的地址,Jenkins的插件,生成的文件都在这个目录下。
JENKINS_USER是Jenkins的用户,拥有$JENKINS_HOME和/var/log/jenkins的权限。
JENKINS_PORTJENKINS_PORT是Jenkins的端口,默认端口是8080。
报错解决如下:
jenkins报错:Problem accessing /jenkins/. Reason: HTTP ERROR 404
这是一个Jenkins的Bug。临时解决方法是:在浏览器中手工输入:http://:
不要访问"/jenkins"这个路径。
jenkins 报错: office This jenkins instance appears to be offline.
[root@caosm98 ~]# cat /var/lib/jenkins/hudson.model.UpdateCenter.xml
default
http://updates.jenkins.io/update-center.json
https 改成http
需要重启jenkins
系统管理---->管理插件---->已安装
发布系统之前需要检查一下 是否安装Git plugin和Publish Over SSH插件,如果没有,则需要点击可选插件,找到并进行安装。
如果没有安装,点击直接安装后,记得要进行重启jenkins。
系统管理---->系统设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pTWSc1T9-1571622630483)(https://github.com/innocencecaosm/picture/blob/master/jenkins/7.jpg?raw=true)]
私钥已经放到了gitlab服务器,实现免密登录,要把对应的公钥也考到到gitlab服务器上
[root@caosm03 ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwcDdehNrtH8pkBBswFJ0I4UcHzkWIjcsU4zZF1Fj7otj4g/NmEjJFLTeXqDBDsdEOwc3gnuKKtcoVsouOrLn3TzQxdjRHq6trrObsiLurOvKd9iBY+xp2FMcTBVW9Mz5NSqXfW/iqKHtmlz9lGZDWFYbAG3LWCLcbY9X5uV+5BB2jvlJTiw0QiYherTA9Rfiw6MJNhvkdLIolGSq7ot6Vwilp5/SgwKc/DzZ267TLNySjDL8n9vpLv0OcKm0eIYuP6dhgjGv18EeCQR0aZUSeYp9wU+hntd8knyHYRBsb0ZUlyBdJvqvaejbdFqNYPeXgxWbIwhrEoTmsYYnNVHmIw== [email protected]
把秘钥追加到authorized_keys 这个文件
[root@caosm03 ~]# vim ~/.ssh/authorized_keys
测试免密登录
[root@caosm03 ~]# ssh caosm03.com
Last login: Thu Dec 21 15:48:12 2017 from 192.168.24.1 免密登录没有问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TrUApVbD-1571622630484)(https://github.com/innocencecaosm/picture/blob/master/jenkins/8.jpg?raw=true)]
应用 ---->保存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bJX076bi-1571622630484)(https://github.com/innocencecaosm/picture/blob/master/jenkins/9.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjHgJE3u-1571622630485)(https://github.com/innocencecaosm/picture/blob/master/jenkins/10.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UStmZpjp-1571622630485)(https://github.com/innocencecaosm/picture/blob/master/jenkins/11.jpg?raw=true)]
应用 ---->保存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jjNK1o24-1571622630486)(https://github.com/innocencecaosm/picture/blob/master/jenkins/12.jpg?raw=true)]
[root@caosm03 jenkins]# ll
total 8
-rw-r--r-- 1 nobody nobody 28 Dec 22 13:51 a.txt
-rw-r--r-- 1 nobody nobody 1624 Dec 22 13:51 zabbix_agentd_install.sh
已经成功发布到指定位置
java 的项目是需要编译和打包的
编译和打包用maven完成,所以需要进行安装maven
本次的实验,我们采用git 私有仓库的形式,涉及到秘钥的配置
自己的git仓库 已经搭建完毕
生成秘钥对
下载zrlog 的源码
下载的文件进行解压https://github.com/94fzb/zrlog/archive/master.zip
然后用git push到git 私有仓库中
[root@caosm03 caosm]# wget https://github.com/94fzb/zrlog/archive/master.zip
[root@caosm03 caosm]# unzip master.zip
[root@caosm03 caosm]# mv zrlog-master /usr/local
[root@caosm03 zrlog-master]# ls
bin CHANGELOG.md doc LICENSE mvnw mvnw.cmd pom.xml README.md src
把源代码上传到gitlab 上
[root@caosm03 ~]# git config --global user.name "Administrator"
[root@caosm03 ~]# git config --global user.email "[email protected]"
[root@caosm03 ~]# git clone [email protected]:root/zrlog-master.git
[root@caosm03 zrlog-master]# \cp /usr/local/zrlog-master/* -rf .
[root@caosm03 ~]# cd zrlog-master/
[root@caosm03 zrlog-master]# git add .
[root@caosm03 zrlog-master]# git commit -m "add zrlog"
[master (root-commit) 7fafe14] add zrlog
[root@caosm03 zrlog-master]# git push -u origin master
Counting objects: 448, done.
Compressing objects: 100% (419/419), done.
由于我的jenkins 本身就是基于tomcat 所以我这里不需要单独安装tomcat 了
[root@caosm03 conf]# vim tomcat-users.xml #在最后配置以下几行
注意:配置完之后 需要重启tomcat , 因为本身tomcat 上有jenkins 还做了配置 重启会时间长一些耐心等待一些
如果不能成功访问提示:403access denied
注意修改这个文件
[root@caosm03 META-INF]# vim context.xml
/usr/local/tomcat/webapps/manager/META-INF
支持正则匹配
更改完配置 注意进行重启
正常访问manager
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-en3Y2rFn-1571622630486)(https://github.com/innocencecaosm/picture/blob/master/jenkins/14.jpg?raw=true)]
填写刚才配置文件里面输入的用户名以及密码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LLU27y3r-1571622630487)(https://github.com/innocencecaosm/picture/blob/master/jenkins/15.jpg?raw=true)]
jenkins 通过通过maven 编译源码包 生成war 包访问tomcat 的manager 的api 接口进行发布
下载地址:https://maven.apache.org/download.cgi
[root@caosm03 caosm]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
--2017-12-22 17:07:48-- http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
Resolving mirrors.tuna.tsinghua.edu.cn... 101.6.6.178, 2402:f000:1:416:101:6:6:178
Connecting to mirrors.tuna.tsinghua.edu.cn|101.6.6.178|:80... connected.
HTTP request sent, awaiting response... 200 OK
[root@caosm03 caosm]# tar -zxvf apache-maven-3.5.2-bin.tar.gz -C /usr/local/
[root@caosm03 apache-maven-3.5.2]# /usr/local/apache-maven-3.5.2/bin/mvn --version 查看版本
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: /usr/local/apache-maven-3.5.2
Java version: 1.8.0_77, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_77/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-642.el6.x86_64", arch: "amd64", family: "unix"
系统管理----->全局工具配置
Maven Configuration 里面配置settings.xml 的位置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OHsBb0Ma-1571622630487)(https://github.com/innocencecaosm/picture/blob/master/jenkins/17.jpg?raw=true)]
Maven的设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8nL1qkLb-1571622630488)(https://github.com/innocencecaosm/picture/blob/master/jenkins/16.jpg?raw=true)]
配置java
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IS6Gg3sn-1571622630488)(https://github.com/innocencecaosm/picture/blob/master/jenkins/22.jpg?raw=true)]
保存—>应用
Maven Integration plugin 发布maven 所使用的插件
Deploy to container 发布到远程 机器所使用的机器
安装完插件进行重启jenkins
项目名称 caosm_java 确定
源码管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ABmUoJx-1571622630489)(https://github.com/innocencecaosm/picture/blob/master/jenkins/18.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O6IFlRsR-1571622630489)(https://github.com/innocencecaosm/picture/blob/master/jenkins/19.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rvosavMu-1571622630490)(https://github.com/innocencecaosm/picture/blob/master/jenkins/20.jpg?raw=true)]
bulid配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kiXILvN9-1571622630491)(https://github.com/innocencecaosm/picture/blob/master/jenkins/21.jpg?raw=true)]
构建后操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j8chJeb1-1571622630491)(https://github.com/innocencecaosm/picture/blob/master/jenkins/24.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qE2GMtEE-1571622630492)(https://github.com/innocencecaosm/picture/blob/master/jenkins/25.jpg?raw=true)]
保存应用
系统管理--->系统设置----->jenkins Location --->jenkins URL( http://192.168.24.130:8090/jenkins/ )
系统管理员邮件地址(183\*\*\*\*\*\*\*\*@139.com)------>邮件通知------>SMTP服务器(smtp.139.com)------>用户默认邮件后缀(@139.com)------>高级------>使用SMTP认证(勾选)------>用户名()------>密码()------>SMTP端口(25)------>字符集(UTF-8)------>通过发送测试邮件测试配置(勾选)------>Test e-mail recipient(邮箱地址)------>test configuration------> apply------>保存
注意:系统管理员邮件地址 和测试使用邮箱要一致不然会不成功!!!
备注:建议使用139邮箱测试比较顺利,手机短信有提醒。配置的过程中,用户名密码要正确
mail.139.com 设置 账户信息 邮箱协议设置 服务开关 开启 POP3以及开启IMAP 点击保存
点击自己的工程 ------> 配置------> 构建后操作------> E-mail Notification------>Recipients(邮箱地址)------>每次不稳定的构建都发送邮件通知(勾选)------>apply------>保存
构建不稳定就会发送邮件
[root@caosm03 jenkins]# rm -rf *
[root@caosm03 tmp]# chattr +i jenkins/
注:故意删除自己的文件 设置权限使其不能正常发布进行测试
在自己的job里面
Project caosm_php------> 立即构建
显示黄颜色 不能正常构建进行告警,查看控制台信息 ERROR: Exception when publishing, exception message [Permission denied]Build step 'Send files or execute commands over SSH' changed build result to UNSTABLESending e-mails to: 183******@139.comFinished: UNSTABLE
查看邮件
See
注:只要测试成功,构建的时候不报警不要紧,可以再构建一次来试试!
只会在不稳定失败的时候发送通知!
安装插件email-ext
系统管理管理插件可选插件 (搜索exmail-ext)Email Extension Plugin–直接安装–重启jenkins·(时间会长一些)
内容参数设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K4zB5WcM-1571622630492)(https://github.com/innocencecaosm/picture/blob/master/jenkins/1.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T2RKDIWH-1571622630493)(https://github.com/innocencecaosm/picture/blob/master/jenkins/2.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xC5TfB1H-1571622630494)(https://github.com/innocencecaosm/picture/blob/master/jenkins/3.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L4wTjXxl-1571622630494)(https://github.com/innocencecaosm/picture/blob/master/jenkins/4.jpg?raw=true)]
应用,保存
job 里面进行配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0LycDHzT-1571622630495)(https://github.com/innocencecaosm/picture/blob/master/jenkins/5.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TSuB7guC-1571622630496)(https://github.com/innocencecaosm/picture/blob/master/jenkins/6.jpg?raw=true)]
应用,保存
经测试信息如下
caosm_php - Build # 15 - Successful:
Check console output at http://192.168.24.130:8090/jenkins/job/caosm_php/15/
to view the results.
附件中有构建日志!构建成功!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5FBljaE-1571622630497)(https://github.com/innocencecaosm/picture/blob/master/jenkins/12.jpg?raw=true)]
在Jenkins中,可在 Jenkins 实例建立用户和他们的相关权限。默认情况下,不希望每个人都能够在 Jenkins 中定义工作或其他管理任务。因此,Jenkins 必须有一个安全配置的能力。
要配置 Jenkins 安全,请执行以下步骤。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WJOkQYjs-1571622630497)(https://github.com/innocencecaosm/picture/blob/master/jenkins/jenkins%E6%9D%83%E9%99%901.jpg?raw=true)]
点击启用安全(Enable Security)选项。举个例子,假设我们希望 Jenkins 来维持它的用户自己的数据库,所以在安全域(Security Realm),选择“Jenkin's own user database” 选项。
默认情况下,希望有一个中央管理员可以在系统中定义用户,从而确保 “Allow users to sign up” 选项选中。现在剩下的可以不用管了,点击保存(Save)按钮就可以。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FcVXkv2g-1571622630497)(https://github.com/innocencecaosm/picture/blob/master/jenkins/jenkins%E6%9D%83%E9%99%902.jpg?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TXv0KfOa-1571622630498)(https://github.com/innocencecaosm/picture/blob/master/jenkins/jenkins%E6%9D%83%E9%99%903.jpg?raw=true)]
现在是时候来创建系统中的用户了。现在,当你转到 Manage Jenkins,向下滚动,会看到一个“Manage Users”选项。单击该选项。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4R09SJFa-1571622630498)(https://github.com/innocencecaosm/picture/blob/master/jenkins/jenkins%E6%9D%83%E9%99%904.jpg?raw=true)]
定义管理员用户,开始创建其他系统的用户。作为一个例子,我们只是创建一个用户名为“user”。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-skVGaduZ-1571622630498)(https://github.com/innocencecaosm/picture/blob/master/jenkins/jenkins%20%E6%9D%83%E9%99%905.jpg?raw=true)]
现在是时候来设置授权,基本上是可以访问什么。转到 Manage Jenkins → Configure Global Security.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KTXSfmfK-1571622630499)(https://github.com/innocencecaosm/picture/blob/master/jenkins/jenkisn%E6%9D%83%E9%99%906.jpg?raw=true)]
现在在授权部分,单击 ‘Matrix based security’
如果没有看到用户在用户组列表中,输入用户名,并将其添加到列表中。然后给予适当的权限给用户。
一旦定义了相关的授权,点击保存(Save)按钮。
Jenkins 安全现在已经设置。
注: 对于Windows AD身份验证,Active Directory插件添加到Jenkins。