jenkins

目录

一、jenkins介绍
二、jenkins安装
三、了解jenkins
四、发布php代码
五、jenkins邮件配置-内置邮件
六、插件email-ext
七、破解管理员密码
八、部署java项目-创建私有仓库
九、部署java项目-下载zrlog源码
十、安装tomcat
十一、部署java项目-安装maven
十二、部署java项目-安装插件
十三、部署java项目-构建job
十四、部署java项目-发布war包

一、jenkins介绍

官网 https://jenkins.io
Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)基于web界面的平台。
Jenkins是一个工具集,提供了各种各样的插件
比如获取git上最新的代码
比如可以帮你编译源代码
比如可以调用自定义的shell脚本远程执行命令
官方文档 https://jenkins.io/doc/

二、jenkins安装

最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8
安装jdk1.8
yum install -y java-1.8.0-openjdk
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum install -y jenkins
systemctl start jenkins
less /var/log/jenkins/jenkins.log //查询admin密码
访问 http://ip:8080/ 进行安装

#安装jdk1.8
[root@minglinux-02 ~] yum install -y java-1.8.0-openjdk

#安装jenkins的yum源
[root@minglinux-02 ~] wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
[root@minglinux-02 ~] cat /etc/yum.repos.d/jenkins.repo 
[jenkins]
name=Jenkins
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1
[root@minglinux-02 ~] rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key  #安装密钥

#安装jenkins
[root@minglinux-02 ~] yum install -y jenkins  #最新稳定版

#启动jenkins
[root@minglinux-02 ~] systemctl start jenkins
[root@minglinux-02 ~] ps aux |grep jenkins
jenkins    4948  161 10.7 3028584 199664 ?      Ssl  23:37   0:16 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root       5004  0.0  0.0 112720   980 pts/0    R+   23:37   0:00 grep --color=auto jenkins

#打开日志文件查询admin密码
[root@minglinux-02 ~] less /var/log/jenkins/jenkins.log 
···
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

cdafdd40a0f4413abe1d60060311bba4

This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
···

# 然后就可以访问 http://ip:8080/ 进行安装了

  • web安装jenkins
  1. 输入密钥


    image.png
  2. 安装推荐的插件

image.png
  1. 开始安装


    image.png
  2. 创建用户


    image.png
  3. 完成


    image.png

    image.png

三、了解jenkins

Jenkins相关目录
rpm -ql jenkins
安装目录 /var/lib/jenkins
任务目录 /var/lib/jenkins/jobs
插件目录 /var/lib/jenkins/plugins
用户目录 /var/lib/jenkins/users
配置文件 /etc/sysconfig/jenkins
日志目录 /var/log/jenkins
jenkins备份可以将相关文件拷贝即可

[root@minglinux-02 /var/lib/jenkins] rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins

#jenkins主目录
[root@minglinux-02 ~] cd /var/lib/jenkins
[root@minglinux-02 /var/lib/jenkins] ls
config.xml                                      jenkins.telemetry.Correlator.xml  secret.key.not-so-secret
hudson.model.UpdateCenter.xml                   jobs                              secrets
hudson.plugins.git.GitTool.xml                  logs                              updates
identity.key.enc                                nodeMonitors.xml                  userContent
jenkins.install.InstallUtil.lastExecVersion     nodes                             users
jenkins.install.UpgradeWizard.state             plugins                           workflow-libs
jenkins.model.JenkinsLocationConfiguration.xml  secret.key

四、发布php代码

“系统管理”→“插件管理”→“已安装”
检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有,则需点击“可选插件”,找到它并安装
安装好两个插件后,点击“系统管理”→ “系统设置”
下拉,找到“Publish Over SSH”
事先在一台linux服务器上生成一对密钥
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,继续点击“增加”,重复以上操作
点左下角的“保存”
点击“新建”,任务名称自定义,比如test,选择“构建一个自由风格的软件项目”点击下方的“确定”
描述,自定义
“源码管理”选择 “Git”
“Repository URL”填写你项目的git地址,如果是公共项目可以不设置下面的参数,直接填写一个git地址即可,若是私有项目,需要填写认证信息,比如可以选择 “SSH Username with private key”,然后设置Username以及private key
“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 Transfer Set”,如果还有另外的机器,可以点击 “Add Server”重复以上操作
最后点击左下角的“保存”
完成以上操作后,就可以使用这个刚刚创建的任务去工作了。
点击左面的“立即构建”,就能把git上的代码发布到指定的服务器上。
点击左下角的#1/#2… ,然后再点击 “控制台输出”可以查看输出日志

  • jenkins插件设置
    检查两个必要插件是否安装,未安装就安装,装完重启jenkins再次查看


    image.png
image.png
image.png
  • ssh密钥设置,点击系统管理-->系统设置,找到Publish Over SSH,新增SSH Server,可增加多个


  • 点新增minglinux-01


  • minglinux-02


#私钥拷贝到jenkins
[root@minglinux-02 ~] cat .ssh/
authorized_keys  id_rsa           id_rsa.pub       known_hosts      
[root@minglinux-02 ~] cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAxD0z6YHlzo9uEcJWoJBpArAtVrmgD/UQoW6a0LzYGylDtCWV
D+WlSTfle3KwSCOIN7pNAwXmY92T1UErmg233/VrJ13QAhX6sSeBrLEThRiV9BO+
tqYHqRmv/c3WUr62BJ/zOfAUnQnRfqdyR3rGiO+z/AJwjQzOZuK10NbMNZW3+e/Q
FjbQQUbjdO1Xx01fao5pyezR7hAY1WpQugtbjl+bwuvXUI9EgLnvUOJuQCFpqlsV
cME/T0tVNSoCTCl37TE/mzgwXnDySg15cyZNTq+WKrv+fhoi6q1l/P4rTn5u/Zf7
sVNzFP4pJf+r0DDWV+Jps6wCXlV/j0cBg6iYsQIDAQABAoIBAQCemniieYIq+HGV
mOQ60XyN16ZNOanMO909HA+0NWzURv2ZU+at+oUkMDEhHQisxUsK/1/O2a3jeOpK
qWl8ESpTsB7yqje799et5qg/0r5cDArmQi8ZoAcA/Onoz7wxFEI4aq5CXW/LnGvd
WahbbTeY5WMqgy5EUd1f+kvIhlJ12ycWiO1Vyba55+B69wppz9mAQlibtTlP2NME
whRGhCSxiBKkvuEbmmOkGpnUQVj1qG2DczL6Z79zg0xiXr5A3rgY12jOP4A8pTrE
HhwioANqmZGAYuue6raVI7+WHNiyBu4B/ZkRhAALvBU38P7d+0W4ryS25unku1jT
HRkVcn0hAoGBAPvpexnUS6OYZI4owUV7VpNzb1cWMSHvexvI6z3JkRTMOHbQRwvL
PNzNp+0Gntw9HJSqAHRqzhlnS3QvbMauteGLb0s1Wn2bDrpym9Uu5vt33p1YSBRl
8LDvm8Uje9hHx4e1vvwz0eKpV6Dn7qBoEg7/52M5PZNAOC5qEdHi5eNrAoGBAMds
cIR2n5n8hd++HqrdN4tbFxCzby8jfyEE0Own1/wHzc7vFEax7JqqxBISJVkQMmcO
90SWT6oCH6l46BvzTVfc6FdGd/p3a2JxmLEjcILGtSbwlwqaRvVnPepXsJLAWKNr
XPwrW4KoN+hOHwIh0TL3rntBa/6L76B+OWs8o9dTAoGAN1rR2xYkXNmC1x4rghod
Jx+JishsmXlnQu6+ioA9aiWKDsmrovLQ9/AVA2eeBuVC34QPv4UsrrZdBTXaoDoJ
63rZRNx/evRUozHF/m1lAkMP3uFkTV8tKaQtRX+LmjYDqVWNlxvH9heiEtCERik4
NqWS8eHFHxNQhRp3ufgy7esCgYBLuRRcaAKgYO+gjrtsW8V8h+EROWENgCgErKR8
F4D+tSPj4IpNccAK1q7Owc8mq2zIDzm69GxZfKbzHfLcshz7MOmUQjDKjU/cOJAn
KvLM5ZDhsVdY8k3hXwt2kUd94cWGf/z1z6zWxvM7pXZGw/qApOW+7Y+JPy+FPIim
/Ial+wKBgQCjRTViRDAKLpuBK9ooSA7x6VGprRyOnAo6rUvyrQIOP8+R79TACc71
U6wsqLzEguXiskB7mdQc9a0te57iaWkKNxnq2ZHRXk9d4TiylGbsHhfvj2p4loak
e9RQ1nQs3+7duPu11EDwKCjD24XdhwMeFC4pDU7mocgH4+2oWlgtkg==
-----END RSA PRIVATE KEY-----

#公钥则拷贝到远程机器和本机的authorized_keys中(需要发布代码到远程机器和本机)
[root@minglinux-02 ~] cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEPTPpgeXOj24RwlagkGkCsC1WuaAP9RChbprQvNgbKUO0JZUP5aVJN+V7crBII4g3uk0DBeZj3ZPVQSuaDbff9WsnXdACFfqxJ4GssROFGJX0E762pgepGa/9zdZSvrYEn/M58BSdCdF+p3JHesaI77P8AnCNDM5m4rXQ1sw1lbf579AWNtBBRuN07VfHTV9qjmnJ7NHuEBjValC6C1uOX5vC69dQj0SAue9Q4m5AIWmqWxVwwT9PS1U1KgJMKXftMT+bODBecPJKDXlzJk1Or5Yqu/5+GiLqrWX8/itOfm79l/uxU3MU/ikl/6vQMNZX4mmzrAJeVX+PRwGDqJix root@minglinux-02

  • 创建新任务


    image.png
  • 定义任务的一些配置


    image.png
image.png
image.png
image.png
image.png
  • 输出日志


    image.png
  • 检查发布结果

[root@minglinux-02 ~] ll /tmp/jenkins/
总用量 100
drwxr-xr-x 2 nobody nobody    66 3月  19 2019 D11Z
drwxr-xr-x 2 nobody nobody   260 3月  19 2019 D12Z
drwxr-xr-x 2 nobody nobody    24 3月  19 2019 D13Z
drwxr-xr-x 2 nobody nobody  4096 3月  19 2019 D14Z
drwxr-xr-x 2 nobody nobody  4096 3月  19 2019 D15Z
drwxr-xr-x 2 nobody nobody    25 3月  19 2019 D17Z
drwxr-xr-x 2 nobody nobody    76 3月  19 2019 D18Z
drwxr-xr-x 2 nobody nobody   155 3月  19 2019 D19Z
drwxr-xr-x 2 nobody nobody    83 3月  19 2019 D20Z
drwxr-xr-x 2 nobody nobody   200 3月  19 2019 D21Z
drwxr-xr-x 2 nobody nobody   128 3月  19 2019 D22Z
-rw-r--r-- 1 nobody nobody 18044 3月  19 2019 LICENSE
-rw-r--r-- 1 nobody nobody   419 3月  19 2019 README.md
-rw-r--r-- 1 nobody nobody 66243 3月  19 2019 习题答案.txt

[root@minglinux-01 ~] ll /tmp/jenkins_test/
总用量 92
drwxr-xr-x 2 nobody nobody    80 3月  18 19:56 D11Z
drwxr-xr-x 2 nobody nobody   360 3月  18 19:56 D12Z
drwxr-xr-x 2 nobody nobody    60 3月  18 19:56 D13Z
drwxr-xr-x 2 nobody nobody   320 3月  18 19:56 D14Z
drwxr-xr-x 2 nobody nobody   440 3月  18 19:56 D15Z
drwxr-xr-x 2 nobody nobody    60 3月  18 19:56 D17Z
drwxr-xr-x 2 nobody nobody   100 3月  18 19:56 D18Z
drwxr-xr-x 2 nobody nobody   180 3月  18 19:56 D19Z
drwxr-xr-x 2 nobody nobody   100 3月  18 19:56 D20Z
drwxr-xr-x 2 nobody nobody   200 3月  18 19:56 D21Z
drwxr-xr-x 2 nobody nobody   160 3月  18 19:56 D22Z
-rw-r--r-- 1 nobody nobody 18044 3月  18 19:56 LICENSE
-rw-r--r-- 1 nobody nobody   419 3月  18 19:56 README.md
-rw-r--r-- 1 nobody nobody 66243 3月  18 19:56 习题答案.txt
#当git上的代码做了更新,只要在jenkins上再次点击立即构建就可以发布更新

五、jenkins邮件配置-内置邮件

系统管理 -> 系统设置 -> Jenkins Location 先设置系统管理员邮件地址,这里的邮件地址需要和后续要设置的发邮件地址一致。
往下拉,找到“邮件通知”那一栏
填写SMTP服务器,点右侧的高级,打勾“使用SMTP认证”,填写用户名密码,密码是授权码。如果使用的是ssl协议,还需要在这里打勾,smtp端口默认为25
可以打勾“通过发送测试邮件测试配置”,然后填写接收邮件的地址,点右侧的Test configuration
然后就是到已经构建过的job里去配置接收邮件的地址了。在最下面“构建后操作”那一栏,找到E-mail Notification,Recipients填写收邮件人
这个收件人只会在job构建失败时才能收到邮件

image.png
image.png
image.png
  • 测试效果
#更改接受目录的权限使jenkins无法正常部署代码
[root@minglinux-02 /tmp] rm -rf jenkins_test/*
[root@minglinux-02 /tmp] chattr +i jenkins/
image.png
image.png

六、插件email-ext

插件名字Email Extension Plugin,默认已经安装
内置的邮件通知关掉
系统管理->系统设置->Extended E-mail Notification
填写SMTP server,点击Use SMTP Authentication,填写用户名、密码、SMTP port等
还需到对应构建任务中去配置一下,下拉到“构建后操作”
把原来的E-mail Notification设置删除
点击“增加构建后操作步骤”,选择“Editable Email Notification”,其中Project Recipient List为接收邮件的收件人,可以在默认内容后面增加额外的收件人邮箱,用逗号分隔
点击右下角的“Advanced settings”,定位到“Triggers”,然后点击下方的“Add Trigger”,可以增加发邮件的条件。
参考文章http://www.cnblogs.com/zz0412/p/jenkins_jj_01.html

image.png
image.png
image.png
image.png
image.png

七、破解管理员密码

忘记密码的解决方法
cd /var/lib/jenkins/users/admin
vim config.xml//定位到<passwordHash>那一行
删除改行,改为
<passwordHash>#jbcrypt:$2a$10$JFKBlGonPpR8RT5ecYP4BugSnMbVz7bpacMN68551C1iIM6Oj3Uu.</passwordHash>
重启一下jenkins
使用新密码123456登录
登录jenkins后尽快修改为强密码

#jenkins没有使用数据库,它的所有数据都存在config.xml文件中,包括密码
[root@minglinux-02 ~] cd /var/lib/jenkins/users/admin_2471990701947092050/
[root@minglinux-02 /var/lib/jenkins/users/admin_2471990701947092050] ls
config.xml
[root@minglinux-02 /var/lib/jenkins/users/admin_2471990701947092050] vim config.xml 
#修改密码Hash如下
···
<passwordHash>#jbcrypt:$2a$10$JFKBlGonPpR8RT5ecYP4BugSnMbVz7bpacMN68551C1iIM6Oj3Uu.</passwordHash>
···
#重启jenkins稍等片刻重新使用123456作为密码登录即可

八、部署java项目-创建私有仓库

java的项目是需要编译和打包的
编译和打包用maven完成,所以需安装maven
本次实验,我们采用git私有仓库的形式,涉及到配置密钥
准备工作:
自己申请一个私有git仓库(http://gitlab.example.com/root/test-java.git
生成密钥对
把公钥放到git服务端
下载zrlog的源码 https://codeload.github.com/94fzb/zrlog/zip/master
下载的文件为zip压缩文件,需要解压
然后用git push到新建的私有仓库里

  • 新建项目,权限选Private


    image.png
  • 空仓库


    image.png
  • 将minglinux-02的id_rsa.pub公钥复制为SSH key


    image.png
  • 克隆仓库

#全局设置
[root@minglinux-02 ~] git config --global user.name "Administrator"
[root@minglinux-02 ~] git config --global user.email "admin@example.com"
[root@minglinux-02 /home] git clone git@192.168.162.130:root/test-java.git
正克隆到 'test-java'...
warning: 您似乎克隆了一个空版本库。
[root@minglinux-02 /home] cd test-java/
[root@minglinux-02 /home/test-java] touch README.md
[root@minglinux-02 /home/test-java] git add README.md
[root@minglinux-02 /home/test-java] git commit -m "add README"
[master(根提交) cd866b5] add README
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
[root@minglinux-02 /home/test-java] git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 216 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.162.130:root/test-java.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

[root@minglinux-02 /home/test-java] echo "hello" > README.md 
[root@minglinux-02 /home/test-java] git add README.md
[root@minglinux-02 /home/test-java] git commit -m "ch README"
[master 8ab4799] ch README
 1 file changed, 1 insertion(+)
[root@minglinux-02 /home/test-java] git push 
Counting objects: 5, done.
Writing objects: 100% (3/3), 249 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.162.130:root/test-java.git
   cd866b5..8ab4799  master -> master
  • 查看远程仓库


    image.png

九、部署java项目-下载zrlog源码

下载zrlog的源码 https://codeload.github.com/94fzb/zrlog/zip/master
下载的文件为zip压缩文件,需要解压
然后用git push到新建的私有仓库里

#下载zrlog的源码到本地
[root@minglinux-02 /home] wget https://codeload.github.com/94fzb/zrlog/zip/master 

#解压
[root@minglinux-02 /home] ls
git  lisi  myproject  mysql  test  test-java  zrlog-master.zip
[root@minglinux-02 /home] unzip zrlog-master.zip 

#push到远程私有仓库
[root@minglinux-02 /home] ls
git  lisi  myproject  mysql  test  test-java  zrlog-master  zrlog-master.zip
[root@minglinux-02 /home] mv zrlog-master/* test-java/
mv:是否覆盖"test-java/README.md"? y
[root@minglinux-02 /home] cd test-java/
[root@minglinux-02 /home/test-java] ls
bin  common  data  doc  LICENSE  mvnw  mvnw.cmd  pom.xml  README.en-us.md  README.md  service  web
[root@minglinux-02 /home/test-java] git add .
[root@minglinux-02 /home/test-java] git commit -m "add zrlog"
[root@minglinux-02 /home/test-java] git push
Counting objects: 594, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (542/542), done.
Writing objects: 100% (592/592), 1.85 MiB | 1.50 MiB/s, done.
Total 592 (delta 76), reused 0 (delta 0)
remote: Resolving deltas: 100% (76/76), done.
To git@192.168.162.130:root/test-java.git
   8ab4799..2fc91a1  master -> master

image.png

十、安装tomcat

在另外一台机器minglinux-01上安装jdk + tomcat,其中jdk可以为openjdk,版本1.8
tomcat需要下载二进制包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz
tar zxvf apache-tomcat-8.5.23.tar.gz
mv apache-tomcat-8.5.23 /usr/local/tomcat
vim /usr/local/tomcat/conf/tomcat-users.xml //增加如下内容
<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-status"/>
<user name="admin" password="123456" roles="admin,manager,admin-gui,admin-script,manager-gui,
manager-script,manager-jmx,manager-status" />
启动tomcat

#01机器上已经安装了tomcat,但8080端口已被使用,需要修改监听端口
[root@minglinux-01 ~] ls /usr/local/tomcat/
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work

[root@minglinux-01 ~] netstat -lntp |grep 8080
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      28149/unicorn maste 

[root@minglinux-01 ~] vim /usr/local/tomcat/conf/server.xml 
#修改tomcat监听端口
···
 69     <Connector port="8081" protocol="HTTP/1.1"
 70                connectionTimeout="20000"
 71                redirectPort="8443" />

#启动
[root@minglinux-01 ~] /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@minglinux-01 ~] netstat -lntp |grep 8081
tcp6       0      0 :::8081                 :::*                    LISTEN      29273/java          

#修改配置文件增加tomcat角色
[root@minglinux-01 ~] vim /usr/local/tomcat/conf/tomcat-users.xml 
#加入以下内容
···
 44 <role rolename="admin"/>
 45 <role rolename="admin-gui"/>
 46 <role rolename="admin-script"/>
 47 <role rolename="manager"/>
 48 <role rolename="manager-gui"/>
 49 <role rolename="manager-script"/>
 50 <role rolename="manager-jmx"/>
 51 <role rolename="manager-status"/>
 52 <user name="admin" password="123456" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />

#重启tomcat
[root@minglinux-01 ~] /usr/local/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@minglinux-01 ~] /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

  • 测试无法进入管理页面


  • 还需修改一个配置文件
[root@minglinux-01 ~] vim /usr/local/tomcat/webapps/manager/META-INF/context.xml 
#增加允许访问的网段,支持正则匹配
···
18 <Context antiResourceLocking="false" privileged="true" >
 19   <Valve className="org.apache.catalina.valves.RemoteAddrValve"
 20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.162.*" />
···
#改完配置文件重启一下服务
[root@minglinux-01 ~] /usr/local/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@minglinux-01 ~] /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

  • 登录成功

jenkins通过这个管理的api发布war包:maven把源码编译成war包,然后通过这个页面把war包传给远程tomcat并自动发布。

十一、部署java项目-安装maven

安装maven用来编译java源码并打包
下载地址 https://maven.apache.org/download.cgi
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
tar zxvf apache-maven-3.6.0-bin.tar.gz
mv apache-maven-3.6.0/usr/local/
/usr/local/apache-maven-3.6.0/bin/mvn --version
jenkins -> 系统管理 -> 全局工具配置
Maven Configuration -> Settings file in filesystem -> File Path /usr/local/apache-maven-3.6.0/conf/settings.xml
Global settings file on filesystem -> File Path 同上
下拉到Maven,Maven安装,Name(自定义,如maven3.6.0),MAVEN_HOME填 “/usr/local/apache-maven-3.6.0”
左下角“save”

#安装maven
[root@minglinux-02 ~] wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
[root@minglinux-02 /usr/local] tar zxvf apache-maven-3.6.0-bin.tar.gz 
[root@minglinux-02 /usr/local] ./apache-maven-3.6.0/bin/mvn --version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /usr/local/apache-maven-3.6.0
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.11.6.el7.x86_64", arch: "amd64", family: "unix"

  • jenkins设置新增maven


十二、部署java项目-安装插件

系统管理 -> 管理插件,检查是否已经安装 Maven Integration 和 Deploy to container Plugin,若没有安装则需要安装这两个插件
安装完插件后,需要重启jenkins
systemctl restart jenkins
创建新任务
登录jenkins,点击“新建”,任务名称自定义(我的叫做java-test)
选择“构建一个maven项目”
点击“确定”

  • 安装插件
  • 重启jenkins后新建任务可以看到

十三、部署java项目-构建job

创建新任务
登录jenkins,点击“新建”,任务名称自定义(我的叫做java-test)
选择“构建一个maven项目”
点击“确定”
源码管理
选择 “git”, Repository URL填写你的git地址,并配置对应的key,大家最好事前先在jenkins这台机器上能够直接远程git操作私有仓库
构建触发器、构建环境、Pre Steps保持默认
Build
“Root POM”为pom.xml, Goals and options 填写 clean install -D maven.test.skip=true,也可以留空
Post Steps、构建设置保持默认

#jenkins需要访问git,所以需要将jenkins所在服务器的私钥放到jenkins上,公钥放到gitlab上
[root@minglinux-02 /usr/local] cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAxD0z6YHlzo9uEcJWoJBpArAtVrmgD/UQoW6a0LzYGylDtCWV
D+WlSTfle3KwSCOIN7pNAwXmY92T1UErmg233/VrJ13QAhX6sSeBrLEThRiV9BO+
tqYHqRmv/c3WUr62BJ/zOfAUnQnRfqdyR3rGiO+z/AJwjQzOZuK10NbMNZW3+e/Q
FjbQQUbjdO1Xx01fao5pyezR7hAY1WpQugtbjl+bwuvXUI9EgLnvUOJuQCFpqlsV
cME/T0tVNSoCTCl37TE/mzgwXnDySg15cyZNTq+WKrv+fhoi6q1l/P4rTn5u/Zf7
sVNzFP4pJf+r0DDWV+Jps6wCXlV/j0cBg6iYsQIDAQABAoIBAQCemniieYIq+HGV
mOQ60XyN16ZNOanMO909HA+0NWzURv2ZU+at+oUkMDEhHQisxUsK/1/O2a3jeOpK
qWl8ESpTsB7yqje799et5qg/0r5cDArmQi8ZoAcA/Onoz7wxFEI4aq5CXW/LnGvd
WahbbTeY5WMqgy5EUd1f+kvIhlJ12ycWiO1Vyba55+B69wppz9mAQlibtTlP2NME
whRGhCSxiBKkvuEbmmOkGpnUQVj1qG2DczL6Z79zg0xiXr5A3rgY12jOP4A8pTrE
HhwioANqmZGAYuue6raVI7+WHNiyBu4B/ZkRhAALvBU38P7d+0W4ryS25unku1jT
HRkVcn0hAoGBAPvpexnUS6OYZI4owUV7VpNzb1cWMSHvexvI6z3JkRTMOHbQRwvL
PNzNp+0Gntw9HJSqAHRqzhlnS3QvbMauteGLb0s1Wn2bDrpym9Uu5vt33p1YSBRl
8LDvm8Uje9hHx4e1vvwz0eKpV6Dn7qBoEg7/52M5PZNAOC5qEdHi5eNrAoGBAMds
cIR2n5n8hd++HqrdN4tbFxCzby8jfyEE0Own1/wHzc7vFEax7JqqxBISJVkQMmcO
90SWT6oCH6l46BvzTVfc6FdGd/p3a2JxmLEjcILGtSbwlwqaRvVnPepXsJLAWKNr
XPwrW4KoN+hOHwIh0TL3rntBa/6L76B+OWs8o9dTAoGAN1rR2xYkXNmC1x4rghod
Jx+JishsmXlnQu6+ioA9aiWKDsmrovLQ9/AVA2eeBuVC34QPv4UsrrZdBTXaoDoJ
63rZRNx/evRUozHF/m1lAkMP3uFkTV8tKaQtRX+LmjYDqVWNlxvH9heiEtCERik4
NqWS8eHFHxNQhRp3ufgy7esCgYBLuRRcaAKgYO+gjrtsW8V8h+EROWENgCgErKR8
F4D+tSPj4IpNccAK1q7Owc8mq2zIDzm69GxZfKbzHfLcshz7MOmUQjDKjU/cOJAn
KvLM5ZDhsVdY8k3hXwt2kUd94cWGf/z1z6zWxvM7pXZGw/qApOW+7Y+JPy+FPIim
/Ial+wKBgQCjRTViRDAKLpuBK9ooSA7x6VGprRyOnAo6rUvyrQIOP8+R79TACc71
U6wsqLzEguXiskB7mdQc9a0te57iaWkKNxnq2ZHRXk9d4TiylGbsHhfvj2p4loak
e9RQ1nQs3+7duPu11EDwKCjD24XdhwMeFC4pDU7mocgH4+2oWlgtkg==
-----END RSA PRIVATE KEY-----
私钥放jenkins
公钥放gitlab
  • 最后配正确红色警告自动消失


  • Build


    image.png
  • 构建后操作


    image.png
  • 进行构建尝试报错需重新配置jdk


  • 手动安装jdk

#从01机器拷贝jdk到02机器安装
[root@minglinux-01 ~] scp -r  /usr/local/jdk1.8 192.168.162.132:/usr/local/jdk1.8
  • 最好重启一次jenkins再次进行构建
image.png

十四、部署java项目-发布war包

构建后操作
点击“增加构建后操作步骤”选择“Deploy war/ear to a container”,“WAR/EAR files”填写“**/*.war”,Contex path留空,Containers选择Tomcat 8.x,Tomcat URL填写要把war包发布到的那台机器的url,如http://192.168.162.130:8081
Credentials这里需要点击右侧的Add,添加用户名和密码
继续点击“增加构建后操作步骤”选择“Editable Email Notification”
Project Recipient List,改为$DEFAULT_RECIPIENTS,671670671@ qq.com, 意思是增加额外一个收件人,前面测试做了就不做了
点击右下角的“Advanced settings”,定位到“Triggers”,然后点击下方的“Add Trigger”,可以增加发邮件的条件。
最后点左下角的“保存”
之后就可以点左侧的“立即构建”,然后查看对应任务的“控制台输出”

  • 立即构建然后看控制台输出


    构建失败
#重新安装java,参照之前的做法https://www.jianshu.com/p/7650cc6baba0
[root@minglinux-02 /usr/local] ls /usr/local/jdk1.8/
bin        javafx-src.zip  LICENSE      release                             THIRDPARTYLICENSEREADME.txt
COPYRIGHT  jre             man          src.zip
include    lib             README.html  THIRDPARTYLICENSEREADME-JAVAFX.txt
[root@minglinux-02 /usr/local] vim /etc/profile
[root@minglinux-02 /usr/local] vim /etc/profile
[root@minglinux-02 /usr/local] source /etc/profile
[root@minglinux-02 /usr/local] java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

#JDK的安装路径和Jenkins 默认的JDK路径不一致,建立软链接
[root@minglinux-02 /usr/local] ln -s /usr/local/jdk1.8/bin/java /usr/bin/java

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342