jenkins安装及代码发布

官方文档: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

 

2Jenkins 介绍shell

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

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

 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

相关文章
相关标签/搜索