--很好
https://blog.csdn.net/weixin_43279032/article/details/90675968
25.1 CI/CD介紹
互聯網軟件的開發和發布,已經形成了一套標准流程,假如把開發工作流程分為以下幾個階段:
編碼 --> 構建 --> 集成 --> 測試 --> 交付 --> 部署
正如你在上圖中看到,[持續集成(Continuous Integration)]、[持續交付(Continuous Delivery)]和[持續部署(Continuous Deployment)]有着不同的軟件自動化交付周期。
持續集成(CI)
上面整個流程中最重要的組成部分就是持續集成(Continuous integration,簡稱CI)。
持續集成指的是,頻繁地(一天多次)將代碼集成到主干。將軟件個人研發的部分向軟件整體部分交付,頻繁進行集成以便更快地發現其中的錯誤。
它的好處主要有兩個:
1. 快速發現錯誤。每完成一點更新,就集成到主干,可以快速發現錯誤,定位錯誤也比較容易;
2. 防止分支大幅偏離主干。如果不是經常集成,主干又在不斷更新,會導致以后集成的難度變大,甚至難以集成。
持續集成並不能消除Bug,而是讓它們非常容易發現和改正。持續集成的目的,就是讓產品可以快速迭代,同時還能保持高質量。它的核心措施是,代碼集成到主干之前,必須通過自動化測試。只要有一個測試用例失敗,就不能集成。
持續交付
持續交付(Continuous delivery)指的是,頻繁地將軟件的新版本,交付給質量團隊或者用戶,以供評審。如果評審通過,代碼就進入生產階段。
持續交付在持續集成的基礎上,將集成后的代碼部署到更貼近真實運行環境的「類生產環境」(production-like environments)中。持續交付優先於整個產品生命周期的軟件部署,建立在高水平自動化持續集成之上。
持續交付可以看作持續集成的下一步。它強調的是,不管怎么更新,軟件是隨時隨地可以交付的。
持續部署(CD)
持續部署(continuous deployment)是持續交付的下一步,指的是代碼通過評審以后,自動部署到生產環境。
持續部署的目標是,代碼在任何時刻都是可部署的,可以進入生產階段。
持續部署的前提是能自動化完成測試、構建、部署等步驟。
總的來說,持續集成、持續交付、持續部署提供了一個優秀的 DevOps 環境。對於整個開發團隊來說,能很大地提升開發效率,好處與挑戰並行。無論如何,頻繁部署、快速交付以及開發測試流程自動化都將成為未來軟件工程的重要組成部分。
Jenkins介紹
Jenkins概念
Jenkins是一個開源的、可擴展的持續集成、交付、部署(軟件/代碼的編譯、打包、部署)的基於web界面的平台。允許持續集成和持續交付項目,無論用的是什么平台,可以處理任何類型的構建或持續集成。
官網:https://jenkins.io/ 官方文檔:https://jenkins.io/doc/
Jenkins特性:
開源的java語言開發持續集成工具,支持CI,CD;
易於安裝部署配置:可通過yum安裝,或下載war包以及通過docker容器等快速實現安裝部署,可方便web界面配置管理;
消息通知及測試報告:集成RSS/E-mail通過RSS發布構建結果或當構建完成時通過e-mail通知,生成JUnit/TestNG測試報告;
分布式構建:支持Jenkins能夠讓多台計算機一起構建/測試;
文件識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等;
豐富的插件支持:支持擴展插件,你可以開發適合自己團隊使用的工具,如git,svn,maven,docker等。
11
Jenkins安裝
安裝最低配置:不少於256M內存,不低於1G磁盤,JDK版本>=8(openjdk也可以)。
安裝jenkins
方法一:
環境:centos7
jdk-8u191-linux-x64.tar.gz
apache-tomcat-9.0.14.tar.gz
1.部署jdk環境
[root@localhost ~]# tar zxvf jdk-8u191-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_191/ /usr/local/jdk
[root@localhost ~]# echo 'PATH=$PATH:/usr/local/jdk/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile
1
2
3
4
2.部署tomcat
[root@localhost bin]# tar zxvf apache-tomcat-9.0.14.tar.gz
[root@localhost bin]# mv apache-tomcat-9.0.14 /usr/local/tomcat
[root@localhost bin]# cd /usr/local/tomcat/bin/
[root@localhost bin]# ./startup.sh
測試:
3.部署jenkins
[root@localhost ROOT]# cd /usr/local/tomcat/webapps/ROOT/
[root@localhost ROOT]# rm -rf ./*
[root@localhost ROOT]# mv jenkins.war /usr/local/tomcat/webapps/ROOT/
[root@localhost ROOT]# unzip jenkins.war
1
2
3
4
解壓完即可,測試
方法二:
[root@lzx ~]# yum install -y java-1.8.0-openjdk //安裝openjdk,因為jenkins基於java開發
[root@lzx ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo //wget -O 下載文件並以指定的文件名保存
[root@lzx ~]# cat /etc/yum.repos.d/jenkins.repo
[jenkins]
name=Jenkins
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1 //這里會檢測key
[root@lzx ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key //安裝jenkins key
[root@lzx ~]# yum install -y jenkins
啟動jenkins
[root@lzx ~]# systemctl start jenkins
[root@lzx ~]# ps aux |grep jenkins
jenkins 1157 84.7 10.0 2320896 100884 ? Ssl 23:28 0:08 /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@lzx ~]# less /var/log/jenkins/jenkins.log //查看jenkins日志,截取下面部分
Jenkins initial setup is required. An admin user has been created and a password generated
Please use the following password to proceed to installation:
77faa20f2ad544f7bcb6593b1cf1436b //admin密碼,初始化安裝時會用到
This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword //admin密碼也可以在這里查到
1
2
3
4
5
6
7
8
9
10
11
12
訪問安裝
打開瀏覽器,訪問ip:8080進行安裝,ip為linux機器ip
提示需要輸入管理員密碼,輸入 77faa20f2ad544f7bcb6593b1cf1436b ,點擊繼續,會初始化一小段時間
這里我選擇安裝推薦的插件
這里就已經開始在安裝插件,我們等它安裝完就好了。
了解Jenkins
上面等插件安裝完后,就進入到下面界面,提示要創建第一個admin用戶,並設置用戶名密碼
這里我直接創建用戶名為admin,密碼自定義
點擊保存並完成
提示配置jenkins URL,這里保持默認即可,繼續點擊保存並完成
提示jenkins已經就緒,開始使用jenkins
查看jenkins的配置文件:
[root@lzx ~]# cat /etc/sysconfig/jenkins //查看jenkins的配置文件,定義了home、JAVA_CMD、user、port等基礎配置,保持默認即可
## Path: Development/Jenkins
## Description: Jenkins Automation Server
## Type: string
## Default: "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Java executable to run Jenkins
# When left empty, we'll try to find the suitable Java.
#
JENKINS_JAVA_CMD=""
## Type: string
## Default: "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"
## Type: string
## Default: "false"
## ServiceRestart: jenkins
#
# Whether to skip potentially long-running chown at the
# $JENKINS_HOME location. Do not enable this, "true", unless
# you know what you're doing. See JENKINS-23273.
#
#JENKINS_INSTALL_SKIP_CHOWN="false"
## Type: string
## Default: "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
## Type: integer(0:65535)
## Default: 8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_PORT="8080"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTP requests.
# Default is all interfaces (0.0.0.0).
#
JENKINS_LISTEN_ADDRESS=""
## Type: integer(0:65535)
## Default: ""
## ServiceRestart: jenkins
#
# HTTPS port Jenkins is listening on.
# Default is disabled.
#
JENKINS_HTTPS_PORT=""
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Path to the keystore in JKS format (as created by the JDK 'keytool').
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE=""
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTPS requests.
# Default is disabled.
#
JENKINS_HTTPS_LISTEN_ADDRESS=""
## Type: integer(1:9)
## Default: 5
## ServiceRestart: jenkins
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
JENKINS_DEBUG_LEVEL="5"
## Type: yesno
## Default: no
## ServiceRestart: jenkins
#
# Whether to enable access logging or not.
#
JENKINS_ENABLE_ACCESS_LOG="no"
## Type: integer
## Default: 100
## ServiceRestart: jenkins
#
# Maximum number of HTTP worker threads.
#
JENKINS_HANDLER_MAX="100"
## Type: integer
## Default: 20
## ServiceRestart: jenkins
#
# Maximum number of idle HTTP worker threads.
#
JENKINS_HANDLER_IDLE="20"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS=""
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
查看程序主目錄:
[root@lzx ~]# ls /var/lib/jenkins/ //查看程序主目錄
config.xml nodes
hudson.model.UpdateCenter.xml plugins
hudson.plugins.git.GitTool.xml queue.xml.bak
identity.key.enc secret.key
jenkins.CLI.xml secret.key.not-so-secret
jenkins.install.InstallUtil.lastExecVersion secrets
jenkins.install.UpgradeWizard.state updates
jenkins.model.JenkinsLocationConfiguration.xml userContent
jobs users
logs workflow-libs
nodeMonitors.xml
1
2
3
4
5
6
7
8
9
10
11
12
jobs 瀏覽器上面創建的任務都會存放在這里
logs 存放jenkins相關的日志
nodes 多節點時用到
plugins 插件所在目錄
secrets 密碼秘鑰所在目錄 //jobs和plugins目錄比較重要
1
2
3
4
5
6
7
8
9
jenkins存放數據不依靠數據庫,所以在移植時只需要拷貝整個程序主目錄即可。
發布PHP代碼
查看插件:
系統管理–>插件管理,“可選插件”是未安裝的插件,“已安裝”是已經安裝的插件,其中勾選為灰色的是不可卸載的插件。
檢查是否有“Git plugin”和“Publish over SSH”兩個插件,如果沒有,在“可選插件”中安裝。發現“Publish over SSH”沒有,安裝它,如果設置maven項目,需要安裝Maven Integration plugin插件
安裝完插件后,直接在linux機器上重啟jenkins服務,而不是勾選空閑時重啟
[root@lzx ~]# systemctl restart jenkins
1
重新在瀏覽器上登錄jenkins
1.添加maven項目插件
在全局工具配置。需要配置jdk、git以及maven。
別名隨便起,JAVA_HOMR是你服務器中的環境變量。你可以通過以下代碼查看自己環境變量,如果沒有就只能去找教程安裝jdk了(JDK最好是1.8以上的版本)
echo $JAVA_HOME
1
git最好不要勾選自動安裝
輸入你git在服務器中的路徑,不知道可以用命令查找
whereis git
1
maven也是,最好不要勾選自動安裝
echo $MAVEN_HOME
1
以上就把全局工具配置好了。
補充:服務器中搭建maven環境和Java環境操作如下:
1)
a) tar -zxvf apache-maven-3.5.2-bin.tar.gz
我這里將maven解壓縮之后的路徑為:/usr/local
mv apache-maven-3.5.2/ /usr/local/maven
1
b)、配置maven環境變量
vi /etc/profile
1
添加環境變量
export MAVEN_HOME=/var/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
1
2
編輯之后記得使用source /etc/profile命令是改動生效。
2)
a)
tar -zxvf jdk-8u181-linux-x64.tar.gz
mv jdk-8u181/ /usr/local/java
1
2
b)配置java環境變量
vi /etc/profile
1
添加環境變量
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
1
2
3
4
編輯之后記得使用source /etc/profile命令是改動生效。
2.在linux機器上生成一對秘鑰(可以不按以下操作,直接在jenkins服務器上生成密鑰對,並將公鑰分發到目標服務器上,然后將公鑰內容拷貝到web界面下的key框中)
[root@lzx ~]# cd ~/.ssh/
[root@lzx .ssh]# ls //如果之前有生成過密鑰對,那可以直接用,不需要再生成
authorized_keys known_hosts
[root@lzx .ssh]# ssh-keygen -f ~/.ssh/jenkins //生成密鑰對
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): //直接回車,也可以設置密碼
Enter same passphrase again: //直接回車
Your identification has been saved in /root/.ssh/jenkins.
Your public key has been saved in /root/.ssh/jenkins.pub.
The key fingerprint is:
SHA256:VF7nN5V6pPco5DDnm8PUeu8OEg3VMj/IkgfYkqd/Hx4 root@lzx
The key's randomart image is:
+---[RSA 2048]----+
| = . o.o|
| * = +ooo|
| . = = *=.|
| . .oooO =o|
| S .B+.+.o|
| .=ooE.|
| oo=+ o|
| *..+ |
| o ++|
+----[SHA256]-----+
[root@lzx .ssh]# cat jenkins //查看私鑰
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAu+H7NOAvrPYWwNPur64cwZYJz80MZdmQP44KJy1Zcqsfmawt
axjbgzZSPyXSM9fDqo32dR4OR8PdqFdnSDWU8gXl2tgTcsUiy+y+1TB7ZdgzmI8Z
LAAGKQsrWOFMBB9GCfBlAL6eGg4nnsnc4bDT2sJhZuzgfW/qK5AyWSCIm2wvfFw5
1m2WcaslRzNwGkg2cFK4tuY0ZkiF/UfA+YC88RAhSbjFD5FQKLzSHmkZbxbSGC09
cYtsZb3g4VwmkZUEuU/jy5nBUpxv54B6NjkvMxCVx9M/zviiTSZt+yRDaMySISxB
/3Y9FP7R/3Rcf1ZXYGK32hmQ55pDlbcM0gCEFQIDAQABAoIBAD0uSFweiMfc1unx
2W7R1sFfN1C4p8nev+9CNKIvTUpe2Qp0m9GdJZYjsUKo8Ts6jpfSZKgcom/SIzL3
S0WjVR4+t2u9IxAji8I2FKpdgEFY1uxd5MeENn1VCseFjfhlqqv/4RQN/nPjmhlG
CKxhpYs98vPOPQf70phe+1Y0ludtEztiJEM7viIsF8PLlCwf6P7S1JFIXXOAo+xQ
JAHt3AlzUj+HVfq97SbS+cbhuR/MwvIMQs54AsyPOVtt1Q7AOniDw/bnX8JpE9mU
diww6KHn/qQIB0DSWgvfyGwC6qM6C3nUv+EyybdJBcEsYAUH3SgZpBvu3smT2XN9
MCAFegECgYEA524LrSj57hPSKdGO3RT/jVReq0fHJscqSELHAl40lPSKQm+vFK2L
Z20jnQhPg9ebJQjqdkZ/J8EHuwuZjtiqYAeWUERcp5cEEm/BQZ5fB+vYlTZ+QXNa
S6Z9ex2/+qBwY8bJeZR5LPEzVN2cENH8t6FiJO1/csgS3T+KAxnGZoECgYEAz9Ri
CyGwoJs9IpEb3y9Q1AVeFvUQ47XQGJo4xD5nivJ3W/4XApajJl6hXoVp96Z0gXIR
Hhqp+/d4MOlDSeAUPeHcW6gE0h8BYl25fXbvXSpA7rSv8QU+BtQ4vMpsKF5bpRNt
vQjeJrPtHLuFJrOZ6yzov3s4EXlt0AbOBlWXW5UCgYEAvmn6zXRjfxFr3+B97UUz
pnL+mWqrXyqLjXz0BOzB0rUJdPQzV44anvRbUv7dfZrOGcCmOL50LJ9T3wACTlfS
hsR3Vn+IxJMqVIkCtxy5D+lrAAogA3YHmyrXH48wv+N11YJfjtssgF/MXk0f9W7w
wZ3VBJEsRaJ8cvGuejKg3QECgYEAzvoAun1O3mQ8OlSxoVAJ+11tGwftThofqKDO
sAJGNEbNQDyIxfcnfGr54pyTsCOCG/hxu71qVJlchbmJXeVfw1FQl6d5RZnDUyds
N9te/zW5fQFNx4clAsAP0VT26i0ur/PtcjmGpJzEI71NGgH75A7RrQEWEbERAAAG
5qAPIRECgYEAjpNyIsvDYcEtBj/oCQCa3FdPsGqRaYmBZLqJ4nCP5DolYgJkewKx
n5+AIYsXYYKB7W4a0uPKN6gMVVAkm0Icletpf9UpT51uMSR5JpqIwqOFNgI0+NkV
+jlerYcD909WjV3OqrwZm7yPqwa2RPkIfCbeHnXbkAcv+DuWn4L8RdI=
-----END RSA PRIVATE KEY-----
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
系統管理–>系統設置,找到之前安裝的“Publish over SSH”插件,“Passphrase”填寫之前生成秘鑰時設置的密碼,沒有則留空,“Path to key”留空,“Key”粘貼/root/.ssh/jenkins文件內容。
然后新增“SSH Servers”,填入對應的hostname,這就是PHP代碼要發布的機器
接下來還需要把公鑰拷貝到對應的hostname機器上
[root@lzx .ssh]# cat jenkins.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC74fs04C+s9hbA0+6vrhzBlgnPzQxl2ZA/jgonLVlyqx+ZrC1rGNuDNlI/JdIz18OqjfZ1Hg5Hw92oV2dINZTyBeXa2BNyxSLL7L7VMHtl2DOYjxksAAYpCytY4UwEH0YJ8GUAvp4aDieeydzhsNPawmFm7OB9b+orkDJZIIibbC98XDnWbZZxqyVHM3AaSDZwUri25jRmSIX9R8D5gLzxECFJuMUPkVAovNIeaRlvFtIYLT1xi2xlveDhXCaRlQS5T+PLmcFSnG/ngHo2OS8zEJXH0z/O+KJNJm37JENozJIhLEH/dj0U/tH/dFx/VldgYrfaGZDnmkOVtwzSAIQV root@lzx
到lzx1上粘貼jenkins.pub
[root@lzx1 ~]# cd ~/.ssh/
[root@lzx1 .ssh]# ls
authorized_keys
[root@lzx1 .ssh]# vim authorized_keys //寫入下面內容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC74fs04C+s9hbA0+6vrhzBlgnPzQxl2ZA/jgonLVlyqx+ZrC1rGNuDNlI/JdIz18OqjfZ1Hg5Hw92oV2dINZTyBeXa2BNyxSLL7L7VMHtl2DOYjxksAAYpCytY4UwEH0YJ8GUAvp4aDieeydzhsNPawmFm7OB9b+orkDJZIIibbC98XDnWbZZxqyVHM3AaSDZwUri25jRmSIX9R8D5gLzxECFJuMUPkVAovNIeaRlvFtIYLT1xi2xlveDhXCaRlQS5T+PLmcFSnG/ngHo2OS8zEJXH0z/O+KJNJm37JENozJIhLEH/dj0U/tH/dFx/VldgYrfaGZDnmkOVtwzSAIQV root@lzx
[root@lzx .ssh]# ssh lzx1
root@lzx1's password:
Last login: Thu Sep 20 20:51:25 2018 from 192.168.33.1
[root@lzx1 ~]#exit
logout
Connection to lzx1 closed.
[root@lzx .ssh]# //ssh登錄沒問題
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
瀏覽器上測試連接有沒有問題,點擊Test Configuration,如果沒問題,左側會顯示Success,如下圖
這就說明我們前面的配置是沒問題的。點擊應用,出現“已保存”
如果有多台web server ,可以繼續新增,重復以上操作,最后點擊保存。
新建任務:
回到首頁,點擊創建一個新任務,自定義任務名稱,選擇構建一個自由風格的軟件項目
點擊確定
描述自定義;源碼管理選擇Git(如果使用SVN就選擇Subversion);Repository URL選擇自己公共倉庫的地址,這里為了方便我使用別人的公共倉庫;Branches to build默認為*/master,意思是發布代碼的分支為master分支;構建觸發器和構建環境留空;構建選擇Send files or execute commands over SSH,Name選擇對應的服務器,Source files填入**/**,表示要發布的代碼為全部文件,Remote directory填入/tmp/jenkins_test(自定義一個存放PHP代碼的文件夾名),Remove prefix和Exec command可以留空
點擊Add Server可以增加更多台服務器,在生產環境下通常也是多台服務器一起發布代碼。點擊保存
點擊左側立即構建,會出現構建歷史,其中#1表示第一次構建
點擊#1,點擊控制台輸出
可以查看構建成功,通常構建完,不管是成功還是失敗都會有郵件通知。這里因為沒有配置郵件,所以沒辦法接收到郵件。
到lzx1上查看
[root@lzx1 ~]# ll !$
ll /tmp/jenkins_test/
total 100
drwxr-xr-x 2 root root 66 Sep 21 02:42 D11Z
drwxr-xr-x 2 root root 260 Sep 21 02:42 D12Z
drwxr-xr-x 2 root root 24 Sep 21 02:42 D13Z
drwxr-xr-x 2 root root 4096 Sep 21 02:42 D14Z
drwxr-xr-x 2 root root 4096 Sep 21 02:42 D15Z
drwxr-xr-x 2 root root 25 Sep 21 02:42 D17Z
1
2
3
4
5
6
7
8
9
和我們發布的源是一致的,如下圖
如果在源上面做了變更,繼續點擊立即構建,如果構建成功,那么在目標機器上也可以看到變更的內容。
Jenkins郵件配置
系統管理–>系統設置,找到“郵件通知”進行配置,這里我使用的是163郵箱
發郵件的地址必須與管理員地址一致,否則發郵件會報錯。以上smtp端口如果25不行可以改為465試試。同時必須在163郵箱設置授權碼,並且在上面設置密碼的地方填入該授權碼,不然也是發送不了郵件。
點擊Test configuration,如果顯示為“Email was successfully sent",說明郵箱配置成功
到163郵箱查看是否收到剛剛測試的郵件
收到了,郵件配置成功。點擊保存,進入到之前的任務中,點擊配置
找到構建后操作,選擇E-mail Notification,Recipients這里填入接收郵件的郵箱地址
勾選保持默認即可,點擊保存
現在來測試,故意讓構建不成功,看是否能接收郵件。
首先更改目標目錄的權限,使之無法寫入:
[root@lzx1 ~]# cd /tmp/
[root@lzx1 tmp]# rm -rf jenkins_test/*
[root@lzx1 tmp]# chattr +i jenkins_test/ //加上i權限,讓它無法寫入
1
2
3
回到瀏覽器,點擊立即構建,查看控制台輸出:
到163郵箱進行查看:
郵件收到,郵箱配置成功。
但這樣有一點不好,只有構建失敗才會發郵件提示,我想讓它不管構建成功還是失敗都發郵件提示。
使用插件email-ext配置郵件
想讓它不管構建成功還是失敗都發郵件來提示,就必須要安裝一個插件,該插件名字是Email Extension Plugin。如果你是按照上面步驟來的,那么該插件就已經安裝。系統管理–>插件管理查看是否安裝此插件,沒有就安裝。
系統管理–>系統設置–>Extended E-mail Notification,填寫SMTP server,勾選Use SMTP Authentication,再填寫User Name和Password,Password這里填郵箱授權碼,然后SMTP port這里填25
往下拉,定位到Default Triggers,選擇always,表示不管什么情況都會發郵件提示。之后再清空之前設置的郵箱通知,應用、保存即可
打開任務(我這里是lzx_php)–>配置,去掉構建后操作,點擊增加構建后操作步驟,選擇Editable Email Notification,在Project Recipient List那里添加自己的郵箱,然后點擊Advanced Setting,定位到Triggers,可以在Add Trigger處增加發郵件的條件
現在來測試,看是否能接收郵件。
先要改回目標目錄原來的權限:
[root@lzx1 tmp]# chattr -i jenkins_test/ //讓該目錄可以寫入
1
回到瀏覽器,點擊立即構建,查看控制台輸出:
到163郵箱進行查看:
郵件收到,郵箱配置成功。
破解管理員密碼
人難免會犯些錯誤,如果我們不小心忘記了管理員密碼,我們如何去修改回來呢?
編輯admin配置文件:
[root@lzx ~]# cd /var/lib/jenkins/users/admin/
[root@lzx admin]# ls
config.xml
[root@lzx admin]# vim config.xml //找到<passwordHash>這行,用下面一行替換掉原來的
<passwordHash>#jbcrypt:$2a$10$eJAMBW3qb/ijrFsSxkJnDOB747e0mFWSR03UmLCn96E4N7vL5BYzC</passwordHash>
這樣你的密碼就會被重置為123456啦
1
2
3
4
5
6
7
重啟服務,進入瀏覽器界面修改新的管理員密碼:
[root@lzx admin]# systemctl restart jenkins //需要重啟服務,才能使用123456去登錄
1
回到瀏覽器界面,使用123456去登錄,系統管理–>管理用戶–> admin右側設置齒輪圖標,設置新的管理員密碼,應用、保存即可
————————————————
版權聲明:本文為CSDN博主「灬紫荊灬」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43279032/article/details/90675968