jenkins安装及代码发布

官方文档:https://jenkins.io/zh/doc/

1、引言

 产品设计成型-->开发人员开发代码-->测试人员测试功能-->运维人员发布上线

 持续集成(Continuous integration,简称CI)

 持续交付(Continuous delivery)

 持续部署(Continuous deployment)

 推荐学习网站 http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

2Jenkins 介绍

 官网 官方文档:https://jenkins.io

 Jenkins 是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)基于web界面的平台。

 Jenkins是一个工具集,提供了各种各样的插件

 比如获取git上最新的代码

 比如可以编译源代码

 比如可以调用自定义的shell脚本远程执行命令

 官方文档:https://jenkins.io/zh/doc/

3Jenkins安装 (192.168.128.129:8080)

 最低配置:不少于256M内存,不低于1G磁盘,jdk版本>=8

 安装jdk1.8

 yum install -y java-1.8.0-openjdk //jenkinsjava开发的依赖jdk

 wegt -O /etc/yum.repos.djenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo //安装jenkinsyum

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 导入jenkinsCA证书

 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)、创建第一个管理员用户

4Jenkins 相关目录文件

/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

5Jenkins使用配置插件(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 Servername自定义,Hostname填写线上web服务器的ipUsername填写rootRemote 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 ServerName 选择对应的服务器,TransfersSource files 填写 **/** ,表示全部文件

 Remove prefix可以指定裁掉的前缀目录,这里留空即可,Remote directory 指定远程服务器上代码存放路径,比如/data/wwwroot/www.aaa.comExec command 为文件传输完成后要执行的命令,比如可以是更改文件权限的命令,设置完成后点击“Add Transef Set”(可以传输多个),如果还有另外的机器,可以点击“Add Server”重复以上操作

 最后点击左下角的保存

 完成以上操作后,就可以使用这个刚创建的任务去工作了。

 选择任务名称进入的,点击左面的立即构建(Build Now)”(或者任务视图中有可操作构建按钮),就能把git上的代码发布到指定的服务器上。

 点击左下角的#1/#2...,然后再点击“Console Output”可以查看输出日志

7Jenkins配置邮件--内置邮件

 系统管理-->系统设置-->Jenkins Location 先设置系统管理员邮件地址,这里的邮件地址需要和后续要设置的发邮件地址一致。

 向下拉,找到邮件通知

 填写SMTP服务器,点右侧的高级,打勾 使用SMTP认证,填写用户名密码,如果使用的是ssl协议,还需要在这里打勾,smtp端口默认为 25

 可以打勾通过发送测试邮件测试配置,然后填写接收邮件的地址,点右侧的Test configuration

 然后就是到已经构建过的job里去配置接收邮件的地址了。在最下面 构建后操作那一栏,找到E-mail NotificationRecipients填写收邮件人

 邮件只会在job构建失败时发送

8Jenkins配置邮件--插件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

9Jenkins破解管理员密码

 # 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” 用户名--> 设置   进入页面配置密码

10Jenkins部署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

11Jenkins部署java项目-web服务器tomcat   (192.168.128.128:8080)

 web服务器上安装 jdk+tomcatyum 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   //增加允许访问IP192.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

12Jenkins部署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 安装

填写信息如下:

Namemaven-3.6.1

 MAVEN_HOME/usr/local/apache-maven-3.6.1

可以选择自动安装(Install automatically)这里不勾选自动安装。

 保存(save)

13Jenkins部署java项目-安装插件

 系统管理-->管理插件(Manage Plugins),检查是否已经安装 Maven Integration plugin(创建maven相关项目任务时要用到) Deploy to container Plugin(用于把war包发布到远程),若没有安装则需要安装这两个插件(jenkins上找到可直接安装)

 安装完插件后,需要重启jenkinssystemctl restart jenkins

14Jenkins部署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,然KeyADD密钥

 选择 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

15Jenkins部署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

16Jenkins部署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

原文地址:https://www.cnblogs.com/uphold/p/11272522.html