jenkins

目錄

一、jenkins介紹
二、jenkins安裝
三、了解jenkins
四、發(fā)布php代碼
五、jenkins郵件配置-內(nèi)置郵件
六、插件email-ext
七、破解管理員密碼
八、部署java項(xiàng)目-創(chuàng)建私有倉庫
九、部署java項(xiàng)目-下載zrlog源碼
十、安裝tomcat
十一、部署java項(xiàng)目-安裝maven
十二、部署java項(xiàng)目-安裝插件
十三、部署java項(xiàng)目-構(gòu)建job
十四、部署java項(xiàng)目-發(fā)布war包

一、jenkins介紹

官網(wǎng) https://jenkins.io
Jenkins是一個(gè)開源的、可擴(kuò)展的持續(xù)集成、交付、部署(軟件/代碼的編譯、打包、部署)基于web界面的平臺。
Jenkins是一個(gè)工具集,提供了各種各樣的插件
比如獲取git上最新的代碼
比如可以幫你編譯源代碼
比如可以調(diào)用自定義的shell腳本遠(yuǎn)程執(zhí)行命令
官方文檔 https://jenkins.io/doc/

二、jenkins安裝

最低配置: 不少于256M內(nèi)存,不低于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/ 進(jìn)行安裝

#安裝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  #最新穩(wěn)定版

#啟動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/ 進(jìn)行安裝了

  • web安裝jenkins
  1. 輸入密鑰


    image.png
  2. 安裝推薦的插件

image.png
  1. 開始安裝


    image.png
  2. 創(chuàng)建用戶


    image.png
  3. 完成


    image.png

    image.png

三、了解jenkins

Jenkins相關(guān)目錄
rpm -ql jenkins
安裝目錄 /var/lib/jenkins
任務(wù)目錄 /var/lib/jenkins/jobs
插件目錄 /var/lib/jenkins/plugins
用戶目錄 /var/lib/jenkins/users
配置文件 /etc/sysconfig/jenkins
日志目錄 /var/log/jenkins
jenkins備份可以將相關(guān)文件拷貝即可

[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

四、發(fā)布php代碼

“系統(tǒng)管理”→“插件管理”→“已安裝”
檢查是否有“Git plugin”和“Publish Over SSH”兩個(gè)插件,如果沒有,則需點(diǎn)擊“可選插件”,找到它并安裝
安裝好兩個(gè)插件后,點(diǎn)擊“系統(tǒng)管理”→ “系統(tǒng)設(shè)置”
下拉,找到“Publish Over SSH”
事先在一臺linux服務(wù)器上生成一對密鑰
ssh-keygen -f /root/.ssh/jenkins //可以設(shè)置密碼,也可不設(shè)置
“Passphrase”填寫設(shè)置的密碼, “Path to key”留空,“key”粘貼/root/.ssh/jenkins文件內(nèi)容
點(diǎn)擊左下角“增加”,SSH Server,name自定義,Hostname填寫線上web服務(wù)器的ip,Username填寫root,Remote Directory填寫/
如果是多臺web server,繼續(xù)點(diǎn)擊“增加”,重復(fù)以上操作
點(diǎn)左下角的“保存”
點(diǎn)擊“新建”,任務(wù)名稱自定義,比如test,選擇“構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”點(diǎn)擊下方的“確定”
描述,自定義
“源碼管理”選擇 “Git”
“Repository URL”填寫你項(xiàng)目的git地址,如果是公共項(xiàng)目可以不設(shè)置下面的參數(shù),直接填寫一個(gè)git地址即可,若是私有項(xiàng)目,需要填寫認(rèn)證信息,比如可以選擇 “SSH Username with private key”,然后設(shè)置Username以及private key
“Branches to build” 默認(rèn)為*/master,意思是發(fā)布的分支為master,保持默認(rèn)
“構(gòu)建觸發(fā)器”和“構(gòu)建環(huán)境”留空
“構(gòu)建”,選擇 “Send files or execute commands over SSH”
SSH Server,Name 選擇對應(yīng)的服務(wù)器,Transfers, Source files填寫**/**,表示全部文件
Remove prefix可以指定截掉的前綴目錄,這里留空即可,Remote directory指定遠(yuǎn)程服務(wù)器上代碼存放路徑,比如/data/wwwroot/www.aaa.com,Exec command為文件傳輸完成后要執(zhí)行的命令,比如可以是更改文件權(quán)限的命令,設(shè)置完成后點(diǎn)擊 “Add Transfer Set”,如果還有另外的機(jī)器,可以點(diǎn)擊 “Add Server”重復(fù)以上操作
最后點(diǎn)擊左下角的“保存”
完成以上操作后,就可以使用這個(gè)剛剛創(chuàng)建的任務(wù)去工作了。
點(diǎn)擊左面的“立即構(gòu)建”,就能把git上的代碼發(fā)布到指定的服務(wù)器上。
點(diǎn)擊左下角的#1/#2… ,然后再點(diǎn)擊 “控制臺輸出”可以查看輸出日志

  • jenkins插件設(shè)置
    檢查兩個(gè)必要插件是否安裝,未安裝就安裝,裝完重啟jenkins再次查看


    image.png
image.png
image.png
  • ssh密鑰設(shè)置,點(diǎn)擊系統(tǒng)管理-->系統(tǒng)設(shè)置,找到Publish Over SSH,新增SSH Server,可增加多個(gè)


  • 點(diǎn)新增minglinux-01


  • minglinux-02


#私鑰拷貝到j(luò)enkins
[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-----

#公鑰則拷貝到遠(yuǎn)程機(jī)器和本機(jī)的authorized_keys中(需要發(fā)布代碼到遠(yuǎn)程機(jī)器和本機(jī))
[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

  • 創(chuàng)建新任務(wù)


    image.png
  • 定義任務(wù)的一些配置


    image.png
image.png
image.png
image.png
image.png
  • 輸出日志


    image.png
  • 檢查發(fā)布結(jié)果

[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 習(xí)題答案.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 習(xí)題答案.txt
#當(dāng)git上的代碼做了更新,只要在jenkins上再次點(diǎn)擊立即構(gòu)建就可以發(fā)布更新

五、jenkins郵件配置-內(nèi)置郵件

系統(tǒng)管理 -> 系統(tǒng)設(shè)置 -> Jenkins Location 先設(shè)置系統(tǒng)管理員郵件地址,這里的郵件地址需要和后續(xù)要設(shè)置的發(fā)郵件地址一致。
往下拉,找到“郵件通知”那一欄
填寫SMTP服務(wù)器,點(diǎn)右側(cè)的高級,打勾“使用SMTP認(rèn)證”,填寫用戶名密碼,密碼是授權(quán)碼。如果使用的是ssl協(xié)議,還需要在這里打勾,smtp端口默認(rèn)為25
可以打勾“通過發(fā)送測試郵件測試配置”,然后填寫接收郵件的地址,點(diǎn)右側(cè)的Test configuration
然后就是到已經(jīng)構(gòu)建過的job里去配置接收郵件的地址了。在最下面“構(gòu)建后操作”那一欄,找到E-mail Notification,Recipients填寫收郵件人
這個(gè)收件人只會在job構(gòu)建失敗時(shí)才能收到郵件

image.png
image.png
image.png
  • 測試效果
#更改接受目錄的權(quán)限使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,默認(rèn)已經(jīng)安裝
內(nèi)置的郵件通知關(guān)掉
系統(tǒng)管理->系統(tǒng)設(shè)置->Extended E-mail Notification
填寫SMTP server,點(diǎn)擊Use SMTP Authentication,填寫用戶名、密碼、SMTP port等
還需到對應(yīng)構(gòu)建任務(wù)中去配置一下,下拉到“構(gòu)建后操作”
把原來的E-mail Notification設(shè)置刪除
點(diǎn)擊“增加構(gòu)建后操作步驟”,選擇“Editable Email Notification”,其中Project Recipient List為接收郵件的收件人,可以在默認(rèn)內(nèi)容后面增加額外的收件人郵箱,用逗號分隔
點(diǎn)擊右下角的“Advanced settings”,定位到“Triggers”,然后點(diǎn)擊下方的“Add Trigger”,可以增加發(fā)郵件的條件。
參考文章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后盡快修改為強(qiáng)密碼

#jenkins沒有使用數(shù)據(jù)庫,它的所有數(shù)據(jù)都存在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項(xiàng)目-創(chuàng)建私有倉庫

java的項(xiàng)目是需要編譯和打包的
編譯和打包用maven完成,所以需安裝maven
本次實(shí)驗(yàn),我們采用git私有倉庫的形式,涉及到配置密鑰
準(zhǔn)備工作:
自己申請一個(gè)私有g(shù)it倉庫(http://gitlab.example.com/root/test-java.git
生成密鑰對
把公鑰放到git服務(wù)端
下載zrlog的源碼 https://codeload.github.com/94fzb/zrlog/zip/master
下載的文件為zip壓縮文件,需要解壓
然后用git push到新建的私有倉庫里

  • 新建項(xiàng)目,權(quán)限選Private


    image.png
  • 空倉庫


    image.png
  • 將minglinux-02的id_rsa.pub公鑰復(fù)制為SSH key


    image.png
  • 克隆倉庫

#全局設(shè)置
[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: 您似乎克隆了一個(gè)空版本庫。
[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 設(shè)置為跟蹤來自 origin 的遠(yuǎn)程分支 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
  • 查看遠(yuǎn)程倉庫


    image.png

九、部署java項(xiàng)目-下載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到遠(yuǎn)程私有倉庫
[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

在另外一臺機(jī)器minglinux-01上安裝jdk + tomcat,其中jdk可以為openjdk,版本1.8
tomcat需要下載二進(jìn)制包
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 //增加如下內(nèi)容
<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機(jī)器上已經(jīng)安裝了tomcat,但8080端口已被使用,需要修改監(jiān)聽端口
[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監(jiān)聽端口
···
 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 
#加入以下內(nèi)容
···
 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.

  • 測試無法進(jìn)入管理頁面


  • 還需修改一個(gè)配置文件
[root@minglinux-01 ~] vim /usr/local/tomcat/webapps/manager/META-INF/context.xml 
#增加允許訪問的網(wǎng)段,支持正則匹配
···
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.*" />
···
#改完配置文件重啟一下服務(wù)
[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通過這個(gè)管理的api發(fā)布war包:maven把源碼編譯成war包,然后通過這個(gè)頁面把war包傳給遠(yuǎn)程tomcat并自動發(fā)布。

十一、部署java項(xiàng)目-安裝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 -> 系統(tǒng)管理 -> 全局工具配置
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設(shè)置新增maven


十二、部署java項(xiàng)目-安裝插件

系統(tǒng)管理 -> 管理插件,檢查是否已經(jīng)安裝 Maven Integration 和 Deploy to container Plugin,若沒有安裝則需要安裝這兩個(gè)插件
安裝完插件后,需要重啟jenkins
systemctl restart jenkins
創(chuàng)建新任務(wù)
登錄jenkins,點(diǎn)擊“新建”,任務(wù)名稱自定義(我的叫做java-test)
選擇“構(gòu)建一個(gè)maven項(xiàng)目”
點(diǎn)擊“確定”

  • 安裝插件
  • 重啟jenkins后新建任務(wù)可以看到

十三、部署java項(xiàng)目-構(gòu)建job

創(chuàng)建新任務(wù)
登錄jenkins,點(diǎn)擊“新建”,任務(wù)名稱自定義(我的叫做java-test)
選擇“構(gòu)建一個(gè)maven項(xiàng)目”
點(diǎn)擊“確定”
源碼管理
選擇 “git”, Repository URL填寫你的git地址,并配置對應(yīng)的key,大家最好事前先在jenkins這臺機(jī)器上能夠直接遠(yuǎn)程git操作私有倉庫
構(gòu)建觸發(fā)器、構(gòu)建環(huán)境、Pre Steps保持默認(rèn)
Build
“Root POM”為pom.xml, Goals and options 填寫 clean install -D maven.test.skip=true,也可以留空
Post Steps、構(gòu)建設(shè)置保持默認(rèn)

#jenkins需要訪問git,所以需要將jenkins所在服務(wù)器的私鑰放到j(luò)enkins上,公鑰放到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
  • 構(gòu)建后操作


    image.png
  • 進(jìn)行構(gòu)建嘗試報(bào)錯(cuò)需重新配置jdk


  • 手動安裝jdk

#從01機(jī)器拷貝jdk到02機(jī)器安裝
[root@minglinux-01 ~] scp -r  /usr/local/jdk1.8 192.168.162.132:/usr/local/jdk1.8
  • 最好重啟一次jenkins再次進(jìn)行構(gòu)建
image.png

十四、部署java項(xiàng)目-發(fā)布war包

構(gòu)建后操作
點(diǎn)擊“增加構(gòu)建后操作步驟”選擇“Deploy war/ear to a container”,“WAR/EAR files”填寫“**/*.war”,Contex path留空,Containers選擇Tomcat 8.x,Tomcat URL填寫要把war包發(fā)布到的那臺機(jī)器的url,如http://192.168.162.130:8081
Credentials這里需要點(diǎn)擊右側(cè)的Add,添加用戶名和密碼
繼續(xù)點(diǎn)擊“增加構(gòu)建后操作步驟”選擇“Editable Email Notification”
Project Recipient List,改為$DEFAULT_RECIPIENTS,671670671@ qq.com, 意思是增加額外一個(gè)收件人,前面測試做了就不做了
點(diǎn)擊右下角的“Advanced settings”,定位到“Triggers”,然后點(diǎn)擊下方的“Add Trigger”,可以增加發(fā)郵件的條件。
最后點(diǎn)左下角的“保存”
之后就可以點(diǎn)左側(cè)的“立即構(gòu)建”,然后查看對應(yīng)任務(wù)的“控制臺輸出”

  • 立即構(gòu)建然后看控制臺輸出


    構(gòu)建失敗
#重新安裝java,參照之前的做法http://www.itdecent.cn/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 默認(rèn)的JDK路徑不一致,建立軟鏈接
[root@minglinux-02 /usr/local] ln -s /usr/local/jdk1.8/bin/java /usr/bin/java

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容