官方文档:https://jenkins.io/zh/doc/html
1、引言java
产品设计成型-->开发人员开发代码-->测试人员测试功能-->运维人员发布上线node
持续集成(Continuous integration,简称CI)linux
持续交付(Continuous delivery)git
持续部署(Continuous deployment)github
推荐学习网站 http://www.ruanyifeng.com/blog/2015/09/continuous-integration.htmlweb
2、Jenkins 介绍shell
官网 官方文档:https://jenkins.ioapache
Jenkins 是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)基于web界面的平台。vim
Jenkins是一个工具集,提供了各类各样的插件
好比获取git上最新的代码
好比能够编译源代码
好比能够调用自定义的shell脚本远程执行命令
官方文档:https://jenkins.io/zh/doc/
3、Jenkins安装 (192.168.128.129:8080)
最低配置:很多于256M内存,不低于1G磁盘,jdk版本>=8
安装jdk1.8
yum install -y java-1.8.0-openjdk //jenkins是java开发的依赖jdk
wegt -O /etc/yum.repos.djenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo //安装jenkins的yum源
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo --no-check-certificate 前面执行提示了安全证书未生效因此加了 --no-check-certificate 选项,也有多是系统时间不一样步,能够执行 ntpdate pool.ntp.org 同步
cat /etc/yum.repos.d/jenkins.repo 其中内容能够不执行上面wget命令而直接手写
[jenkins] name=Jenkins baseurl=http://pkg.jenkins.io/redhat gpgcheck=1
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key 导入jenkins的CA证书
yum install -y jenkins
systemctl start jenkins
grep -A 5 'An admin user has been created' /var/log/jenkins/jenkins.log
//查询admin密码
或 cat /var/lib/jenkins/secrets/initialAdminPassword //直接查询admin密码
访问 http://ip:8080/ 进行安装 192.168.128.129:8080
1)、能够选择社区推荐的插件自动安装,也能够选择自定义选择安装
2)、建立第一个管理员用户
4、Jenkins 相关目录文件
/etc/sysconfig/jenkins 主配置文件
/var/lib/jenkins/ 核心的程序文件目录,目录能够直接整个拷贝迁移使用
├── config.xml ├── hudson.model.UpdateCenter.xml ├── hudson.plugins.git.GitTool.xml ├── identity.key.enc ├── jenkins.install.InstallUtil.lastExecVersion ├── jenkins.install.UpgradeWizard.state ├── jenkins.telemetry.Correlator.xml ├── jobs //建立任务目录 ├── logs //日志目录 ├── nodeMonitors.xml ├── nodes //多节点时 ├── plugins //插件目录 ├── secret.key ├── secret.key.not-so-secret ├── secrets ├── updates ├── userContent ├── users └── workflow-libs
5、Jenkins使用配置插件(对ssh的配置)
系统管理 --> 管理插件 --> 已安装
检查是否有 “Git plugin” 和 “Publish Over SSH” 两个插件,若是没有,则需点击 “可选插件”,找到并安装
安装后,点击 “系统管理” --> “系统设置”
下拉,找到 “Publist Over SSH”
事先在jenkins服务器上生成一对密钥
# ssh-keygen -f /root/.ssh/jenkins //可设置密码也可不设置
“Passphrase”填写设置的密码,“Path to key”留空,“key”粘贴/root/.ssh/jenkins文件内容
点击左下角“增长” ,SSH Server,name自定义,Hostname填写线上web服务器的ip,Username填写root,Remote Directory填写 /
将公钥放到远程web server机器/root/.ssh/authorized_keys文件,用于使用过程当中免密登陆访问,能够点jenkins的 “Publist Over SSH”配置部分的 ”Test Configuration"进行测试 Success 表示成功
若是是多台web server,继续点击”增长“,重复上两步操做
点击下角的 ”保存“
6、建立任务(发布PHP代码)
点击“新建”,任务名称自定义,好比 test,选择 “构建一个自由风格的软件项目(Freestyle project)” 点击下方的 “肯定”
描述,自定义
"源码管理" 选择 "Git"
"Repository URL" 填写项目的 git 地址,若是是公共项目能够不设置下面的参数,直接填写一个git地址便可,如果私有项目,须要填写认证信息,好比能够选择"SSH Username whith private key",而后设置Username以及private key
注意,jenkins服务器上须要安装git
“Branches to build”默认为 */master,发布的分支为master,保持默认
”构建触发器“ 和 “构建环境” 留空
“构建”,选择"Send files or execute commands over SSH"
SSH Server,Name 选择对应的服务器,Transfers,Source files 填写 **/** ,表示所有文件
Remove prefix能够指定裁掉的前缀目录,这里留空便可,Remote directory 指定远程服务器上代码存放路径,好比/data/wwwroot/www.aaa.com,Exec command 为文件传输完成后要执行的命令,好比能够是更改文件权限的命令,设置完成后点击“Add Transef Set”(能够传输多个),若是还有另外的机器,能够点击“Add Server”重复以上操做
最后点击左下角的“保存”
完成以上操做后,就能够使用这个刚建立的任务去工做了。
选择任务名称进入的,点击左面的“当即构建(Build Now)”(或者任务视图中有可操做构建按钮),就能把git上的代码发布到指定的服务器上。
点击左下角的#1/#2...,而后再点击“Console Output”能够查看输出日志
7、Jenkins配置邮件--内置邮件
系统管理-->系统设置-->Jenkins Location 先设置系统管理员邮件地址,这里的邮件地址须要和后续要设置的发邮件地址一致。
向下拉,找到 “邮件通知” 栏
填写SMTP服务器,点右侧的高级,打勾 “使用SMTP认证”,填写用户名密码,若是使用的是ssl协议,还须要在这里打勾,smtp端口默认为 25
能够打勾 “经过发送测试邮件测试配置”,而后填写接收邮件的地址,点右侧的Test configuration
而后就是到已经构建过的job里去配置接收邮件的地址了。在最下面 “构建后操做” 那一栏,找到E-mail Notification,Recipients填写收邮件人
邮件只会在job构建失败时发送
8、Jenkins配置邮件--插件email-ext
插件名字Email Extension Plugin,默认已经安装
系统管理-->系统设置-->Extended E-mail Notification
填写SMTP server (如smtp.qq.com),[高级]点击Use SMTP Authentication,填写用户名、密码、SMTP port等
到对应构建任务中去配置一下,下拉到“构建后操做”
点击 “增长构建后操做步骤” ,选择 “Editable Email Notfictation”,其中Project Recipient List 为接收邮件的收件人,能够在默认内容后面增长额外的收件人邮箱,用逗号分隔
点击右下角的 “Advanced settings",定位到 ”Triggers",而后点击下方的 “Add Triger”,能够增长发邮件的条件。
参考文章 https://www.cnblogs.com/zz0412/p/jenkins_jj_01.html
9、Jenkins破解管理员密码
# cat /var/lib/jenkins/users/admin_6452924050092568885/config.xml |grep password
<passwordHash>#jbcrypt:$2a$10$rPg/ozd6c9eJRboFrKo.Zuw.G562CssY0q9Z19I8IUntTY3BlYy.O</passwordHash>
对应了密码 00fae69f05664e479047a60c53f02b12
# vim /var/lib/jenkins/users/admin_6452924050092568885/config.xml
<passwordHash>#jbcrypt:$2a$10$7cmrq4RP45lnXPjKmoCCnO3hr.hYN04BqSm3Y460h8cGpb.ECAAjm</passwordHash>
对应密码为 jenkins@123
# systemctl restart jenkins 重启后生效
密码正常修改路径是页面 右上角 点 “Admin” 用户名--> 设置 进入页面配置密码
10、Jenkins部署java项目-之准备私有仓库(192.168.128.131)及开源java代码(zrlog)
java的项目是须要编译和打包的
编译和打包用maven完成,因此须要安装maven
本次实验,采用git私有仓库的形式,涉及到配置密钥
准备工做:
申请一个私有git仓库(使用自建的gitlabGitlab.note)
生成密钥对 # ssh-keygen -t rsa ,并将公钥放到git服务端,而后能够克隆gitlab仓库数据
# cd /home/gitlab_repository
# git clone git@gitlab.example.com:java/java_test.git
下载zrlog的源码 https://codeload.github.com/94fzb/zrlog/zip/master
# cd /home/gitlab_repository
# wget https://codeload.github.com/94fzb/zrlog/zip/master
# unzip master //会解压出一个目录 zrlog-master
# mv zrlog-master/* java_test/ //移动到 java_test/目录下
将解压后的源码推送到gitlab远程创库
# cd java_test/
# git add .
# git push
11、Jenkins部署java项目-web服务器tomcat (192.168.128.128:8080)
在web服务器上安装 jdk+tomcat,yum install -y java-1.8.0-openjdk
其中 jdk 能够为 openjdk,版本1.8
tomcat 二进制包安装
# wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz
# mv apache-tomcat-8.5.42 /usr/local/tomcat
修改tomcat配置 关于tomcat参考点击
# vim /usr/local/tomcat/conf/tomcat-users.xml //增长以下内容,是由于jenkins须要管理员用户这个接口,因此须要到tomcat中配置
<role rolename="admin"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-stats"/> <user name="admin" password="jenkins123" role="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>
# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml //增长容许访问IP:192.168.128.*
<Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.128.*" /> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
关闭tomcat # /usr/local/tomcat/bin/shutdown.sh
启动tomcat # /usr/local/tomcat/bin/startup.sh
配置好后 http://192.168.128.128:8080/ 进入页面登陆点击任务再次进入页面都会有用户登陆的弹窗
登陆后点击相关按键可进入 manager页面http://192.168.128.128:8080/manager/html
12、Jenkins部署java项目-安装maven
安装maven
maven用于编辑java并打包
下载地址:https://maven.apache.org/download.cgi
# wget # wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz 下载二进制包后手动安装(jenkins在插入管理能够找到Maven Release Plug-in安装包)
# tar zxvf apache-maven-3.6.1-bin.tar.gz -C /usr/local/
# /usr/local/apache-maven-3.6.1/bin/mvn --version
jenkins配置mave
系统管理(manage jenkins)-->全局工具配置(Global Tool Configuration)-->
Maven 配置(Mave Configuration)
填写信息以下:
默认 settings 提供(Default settings provider): Settings file in filesystem
文件路径(File Path): /usr/local/apache-maven-3.6.1/conf/settings.xml
默认全局 settings 提供(Default global settings provider): Global settings filesystem
文件路径(File Path): /usr/local/apache-maven-3.6.1/conf/settings.xml
Maven 安装
填写信息以下:
Name: maven-3.6.1
MAVEN_HOME: /usr/local/apache-maven-3.6.1
能够选择自动安装(Install automatically)这里不勾选自动安装。
保存(save)
13、Jenkins部署java项目-安装插件
系统管理-->管理插件(Manage Plugins),检查是否已经安装 Maven Integration plugin(建立maven相关项目任务时要用到) 和 Deploy to container Plugin(用于把war包发布到远程),若没有安装则须要安装这两个插件(在jenkins上找到可直接安装)。
安装完插件后,须要重启jenkins:systemctl restart jenkins
14、Jenkins部署java项目-构建job
登陆jenkins,点击“新建Item” 进入页面填写以下内容:
输入一个任务名称:(任务名称自定义)--选择 “构建一个maven项目”-->点击“肯定” 后会跳转到一个新页面(这个新建的任务项目页面)
General页面填写:
描述: 根据自身要作的事情任务项目进行描述
源码管理
Git
Repositories
Repository URL git@gitlab.example.com:java/java_test.git
Credentials 添加jenkins机器上的密钥,用于认证git(已经上传过公钥给git上)
添加凭据(密钥)
Domain 全局凭据(unrestricted)
类型(Kind) SSH Username with private key
范围(Scope) 全局(Jenkins,nodes,items,all child items,etc)
Username git
Private Key 点选 Enter directly,然Key中ADD密钥
选择 git (当前上一步新加的git认证)
构建触发器 、构建环境 、Pre Steps 保持默认
Build
Root POM 默认 pom.xml 不作修改
Goals and options 编辑mave时用到的一些选项,能够留空,当前我们这填写了: clean install -D maven.test.skip=true
Post Steps、构建设置 保持默认
构建后操做
Editable Email Notification
Project Recipient List 加入邮箱地址$DEFAULT_RECIPIENTS,254266155@qq.com
应用,保存。能够偿试 构建job,查看 控制台输出,有以下报错:
[ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] Unable to locate the Javac Compiler in: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/../lib/tools.jar Please ensure you are using JDK 1.4 or above and not a JRE (the com.sun.tools.javac.Main class is required). In most cases you can change the location of your Java installation by setting the JAVA_HOME environment variable. [INFO] 1 error [INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for zrlog 2.1.3: [INFO] [INFO] zrlog .............................................. SUCCESS [ 30.534 s] [INFO] common ............................................. FAILURE [01:39 min] [INFO] data ............................................... SKIPPED [INFO] service ............................................ SKIPPED [INFO] web ................................................ SKIPPED [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 02:13 min [INFO] Finished at: 2019-06-13T20:32:33+08:00 [INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project common: Compilation failure [ERROR] Unable to locate the Javac Compiler in: [ERROR] /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/../lib/tools.jar [ERROR] Please ensure you are using JDK 1.4 or above and [ERROR] not a JRE (the com.sun.tools.javac.Main class is required). [ERROR] In most cases you can change the location of your Java [ERROR] installation by setting the JAVA_HOME environment variable. [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn <goals> -rf :common Waiting for Jenkins to finish collecting data
java配置出错,须要从新配置。可能与当前使用安装的openjdk有关,考虑手动安装jdk(也能够使用jenkins)
系统管理(manage jenkins)-->全局工具配置(Global Tool Configuration)-->JDK 路径下能够选择自动安装,也能够手动安装后配置 别名 和 JAVA_HOME
15、Jenkins部署java项目-手动安装JDK
安装
# cd /usr/local/src/
JDK官网下载http://www.oracle.com/techZnetwork/java/javase/downloads/jdk8-downloads-2133151.html
# tar zxvf jdk-8u211-linux-x64.tar.gz
# mv jdk1.8.0_211/ /usr/local/jdk1.8
# systemctl restart jenkins
在jenkins上配置java_home
系统管理(manage jenkins)-->全局工具配置(Global Tool Configuration)-->JDK
JDK安装栏填写以下内容
别名 : jdk1.8
JAVA_HOME: /usr/local/jdk1.8
再去构建成功,能够查看 控制台输出 日志,以下为打好的war包,但尚未上传到web(tomcat)服务上去
/var/lib/jenkins/workspace/测试java代码发布到web/target/zrlog-2.1.3.war
16、Jenkins部署java项目-发布war包
进入项目页面-->配置-->构建后操做 进行以下配置:
增长构建后操做步骤-->选择 Deploy war/ear to a container 填写:
WAR/EAR files : ”**/*.war“
Contex path: 留空
Containers: 选择Tomcat 8.x(根据自动web服务器部署的应用选择)
Tomcat URL: 填写war发要发布到的机器url,如 http://192.168.128.128:8080/
Credentials: 点击右侧的ADD,添加用户名和密码(name="admin" password="jenkins123")
应用,保存
而后再去构建,同时能够看控制台输出 日志信息
同时根据信息状况能够到web服务器(192.168.128.128)上看是否相关内容发布过来 /usr/local/tomcat/webapps