1. 程式人生 > 其它 >Vue專案獲取本地資料夾絕對路徑

Vue專案獲取本地資料夾絕對路徑

25.1 CI/CD介紹

網際網路軟體的開發和釋出,已經形成了一套標準流程,假如把開發工作流程分為以下幾個階段:

編碼 → 構建 → 整合 → 測試 → 交付 → 部署

正如你在上圖中看到,持續整合(Continuous Integration)持續交付(Continuous Delivery)持續部署(Continuous Deployment)有著不同的軟體自動化交付週期。


持續整合(CI)

上面整個流程中最重要的組成部分就是持續整合(Continuous integration,簡稱CI)。

持續整合指的是,頻繁地(一天多次)將程式碼整合到主幹。將軟體個人研發的部分向軟體整體部分交付,頻繁進行整合以便更快地發現其中的錯誤。

它的好處主要有兩個:

1. 快速發現錯誤。每完成一點更新,就整合到主幹,可以快速發現錯誤,定位錯誤也比較容易;

2. 防止分支大幅偏離主幹。如果不是經常整合,主幹又在不斷更新,會導致以後整合的難度變大,甚至難以整合。
  • 1
  • 2
  • 3

持續整合並不能消除Bug,而是讓它們非常容易發現和改正。持續整合的目的,就是讓產品可以快速迭代,同時還能保持高質量。它的核心措施是,程式碼整合到主幹之前,必須通過自動化測試。只要有一個測試用例失敗,就不能整合。


持續交付

持續交付(Continuous delivery)指的是,頻繁地將軟體的新版本,交付給質量團隊或者使用者,以供評審。如果評審通過,程式碼就進入生產階段。

持續交付在持續整合的基礎上,將整合後的程式碼部署到更貼近真實執行環境的「類生產環境」(production-like environments)中。持續交付優先於整個產品生命週期的軟體部署,建立在高水平自動化持續整合之上。

持續交付可以看作持續整合的下一步。它強調的是,不管怎麼更新,軟體是隨時隨地可以交付的。


持續部署(CD)

持續部署(continuous deployment)是持續交付的下一步,指的是程式碼通過評審以後,自動部署到生產環境。

持續部署的目標是,程式碼在任何時刻都是可部署的,可以進入生產階段。

持續部署的前提是能自動化完成測試、構建、部署等步驟。

總的來說,持續整合、持續交付、持續部署提供了一個優秀的 DevOps 環境。對於整個開發團隊來說,能很大地提升開發效率,好處與挑戰並行。無論如何,頻繁部署、快速交付以及開發測試流程自動化都將成為未來軟體工程的重要組成部分。


25.2 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等。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Jenkins安裝

安裝最低配置:不少於256M記憶體,不低於1G磁碟,JDK版本>=8(openjdk也可以)。

  • 環境:
hostname:lzx		ip:192.168.33.150		role:jenkins伺服器

hostname:lzx1		ip:192.168.33.160		role:部署機器
  • 1
  • 2
  • 3
  • 安裝jenkins:
# yum install -y java-1.8.0-openjdk				#安裝openjdk,jenkins基於java開發

# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo				#wget -O 下載檔案並以指定的檔名儲存

# cat /etc/yum.repos.d/jenkins.repo 
[jenkins]
name=Jenkins
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1				#為1時會檢測key

# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key				#安裝jenkins key

# yum install -y jenkins
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 啟動jenkins:
# systemctl start jenkins

# 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
  • 1
  • 2
  • 3
  • 4
# 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
  • 訪問安裝:

開啟瀏覽器,訪問ip:8080進行安裝,ip為伺服器ip

提示需要輸入管理員密碼,輸入77faa20f2ad544f7bcb6593b1cf1436b(上面查到的admin密碼),點選繼續,會初始化一小段時間

這裡我選擇安裝推薦的外掛

這裡就已經開始在安裝外掛,我們等它安裝完就好了。


瞭解Jenkins

上面等外掛安裝完後,就進入到下面介面,提示要建立第一個admin使用者,並設定使用者名稱密碼

這裡我直接建立使用者名稱為admin,密碼自定義

點選儲存並完成

提示配置jenkins URL,這裡保持預設即可,繼續點選儲存並完成

提示jenkins已經就緒,開始使用jenkins

  • 檢視jenkins的配置檔案:
# cat /etc/sysconfig/jenkins				#檢視jenkins的配置檔案,定義了home、JAVA_CMD、user、port等基礎配置,保持預設即可
  • 1
## 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
  • 檢視程式主目錄:
# 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”沒有,安裝它

安裝完外掛後,直接在linux機器上重啟jenkins服務,而不是勾選空閒時重啟

# systemctl restart jenkins
  • 1

重新在瀏覽器上登入jenkins,並在linux機器上生成一對祕鑰

# cd ~/.ssh/

# ls				#如果之前有生成過金鑰對,那可以直接用,不需要再生成
authorized_keys  known_hosts

# 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]-----+

# 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
  • 53
  • 54

系統管理–>系統設定,找到之前安裝的Publish over SSH外掛,Passphrase填寫之前生成祕鑰時設定的密碼,沒有則留空,Path to key留空,Key貼上/root/.ssh/jenkins檔案內容。

然後新增SSH Servers,填入對應的hostname,這就是PHP程式碼要釋出的機器

接下來還需要把公鑰拷貝到對應的hostname機器(lzx1)上

# cat jenkins.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC74fs04C+s9hbA0+6vrhzBlgnPzQxl2ZA/jgonLVlyqx+ZrC1rGNuDNlI/JdIz18OqjfZ1Hg5Hw92oV2dINZTyBeXa2BNyxSLL7L7VMHtl2DOYjxksAAYpCytY4UwEH0YJ8GUAvp4aDieeydzhsNPawmFm7OB9b+orkDJZIIibbC98XDnWbZZxqyVHM3AaSDZwUri25jRmSIX9R8D5gLzxECFJuMUPkVAovNIeaRlvFtIYLT1xi2xlveDhXCaRlQS5T+PLmcFSnG/ngHo2OS8zEJXH0z/O+KJNJm37JENozJIhLEH/dj0U/tH/dFx/VldgYrfaGZDnmkOVtwzSAIQV root@lzx
  • 1
  • 2

到lzx1上貼上jenkins.pub

# cd ~/.ssh/

# ls
authorized_keys

# vim authorized_keys				#寫入下面內容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC74fs04C+s9hbA0+6vrhzBlgnPzQxl2ZA/jgonLVlyqx+ZrC1rGNuDNlI/JdIz18OqjfZ1Hg5Hw92oV2dINZTyBeXa2BNyxSLL7L7VMHtl2DOYjxksAAYpCytY4UwEH0YJ8GUAvp4aDieeydzhsNPawmFm7OB9b+orkDJZIIibbC98XDnWbZZxqyVHM3AaSDZwUri25jRmSIX9R8D5gLzxECFJuMUPkVAovNIeaRlvFtIYLT1xi2xlveDhXCaRlQS5T+PLmcFSnG/ngHo2OS8zEJXH0z/O+KJNJm37JENozJIhLEH/dj0U/tH/dFx/VldgYrfaGZDnmkOVtwzSAIQV root@lzx
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

lzx上登入lzx1測試

# ssh lzx1
root@lzx1's password: 
Last login: Thu Sep 20 20:51:25 2018 from 192.168.33.1

#exit       
logout
Connection to lzx1 closed.
[root@lzx .ssh]#				#ssh登入沒問題
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

瀏覽器上測試連線有沒有問題,點選Test Configuration,如果沒問題,左側會顯示Success,如下圖

這就說明我們前面的配置是沒問題的。點選應用,出現“已儲存”

如果有多臺web server ,可以繼續新增,重複以上操作,最後點選儲存

  • 新建任務:

回到首頁,點選建立一個新任務,自定義任務名稱,選擇構建一個自由風格的軟體專案

點選確定

描述自定義;原始碼管理選擇Git(如果使用SVN就選擇Subversion);Repository URL選擇自己公共倉庫的地址,這裡為了方便我使用別人的公共倉庫;Branches to build預設為*/master,意思是釋出程式碼的分支為master分支;構建觸發器構建環境留空;構建選擇Send files or execute commands over SSHName選擇對應的伺服器,Source files填入**/**,表示要釋出的程式碼為全部檔案,Remote directory填入/tmp/jenkins_test(自定義一個存放PHP程式碼的資料夾名),Remove prefixExec command可以留空

點選Add Server可以增加更多臺伺服器,在生產環境下通常也是多臺伺服器一起釋出程式碼。點選儲存

點選左側立即構建,會出現構建歷史,其中#1表示第一次構建

點選#1,點選控制檯輸出

可以檢視構建成功,通常構建完,不管是成功還是失敗都會有郵件通知。這裡因為沒有配置郵件,所以沒辦法接收到郵件。

到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
drwxr-xr-x 2 root root    76 Sep 21 02:42 D18Z
drwxr-xr-x 2 root root   155 Sep 21 02:42 D19Z
drwxr-xr-x 2 root root    83 Sep 21 02:42 D20Z
drwxr-xr-x 2 root root   200 Sep 21 02:42 D21Z
drwxr-xr-x 2 root root   128 Sep 21 02:42 D22Z
-rw-r--r-- 1 root root 18044 Sep 21 02:42 LICENSE
-rw-r--r-- 1 root root   419 Sep 21 02:42 README.md
-rw-r--r-- 1 root root 66243 Sep 21 02:42 習題答案.txt      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

和我們釋出的源是一致的,如下圖

如果在源上面做了變更,繼續點選立即構建,如果構建成功,那麼在目標機器上也可以看到變更的內容。


Jenkins郵件配置

系統管理系統設定,找到郵件通知進行配置,這裡我使用的是163郵箱

發郵件的地址必須與管理員地址一致,否則發郵件會報錯。同時必須在163郵箱設定授權碼,並且在上面設定密碼的地方填入該授權碼,不然也是傳送不了郵件。

點選Test configuration,如果顯示為“Email was successfully sent",說明郵箱配置成功

到163郵箱檢視是否收到剛剛測試的郵件

收到了,郵件配置成功。點選儲存,進入到之前的任務中,點選配置

找到構建後操作,選擇E-mail NotificationRecipients這裡填入接收郵件的郵箱地址

勾選保持預設即可,點選儲存

現在來測試,故意讓構建不成功,看是否能接收郵件。

  • 首先lzx1上更改目標目錄的許可權,使之無法寫入:
# cd /tmp/

# rm -rf jenkins_test/*

# chattr +i jenkins_test/				#加上i許可權,讓它無法寫入
  • 1
  • 2
  • 3
  • 4
  • 5
  • 回到瀏覽器,點選立即構建,檢視控制檯輸出

  • 到163郵箱進行檢視:

郵件收到,郵箱配置成功。

但這樣有一點不好,只有構建失敗才會發郵件提示,我想讓它不管構建成功還是失敗都發郵件提示。


使用外掛email-ext配置郵件

想讓它不管構建成功還是失敗都發郵件來提示,就必須要安裝一個外掛,該外掛名字是Email Extension Plugin。如果你是按照上面步驟來的,那麼該外掛就已經安裝。系統管理外掛管理檢視是否安裝此外掛,沒有就安裝。

系統管理系統設定Extended E-mail Notification,填寫SMTP server,勾選Use SMTP Authentication,再填寫User NamePasswordPassword這裡填郵箱授權碼,然後SMTP port這裡填25

往下拉,定位到Default Triggers,選擇always,表示不管什麼情況都會發郵件提示。之後再清空之前設定的郵箱通知,應用、儲存即可

開啟任務(我這裡是lzx_php)→ 配置,去掉構建後操作,點選增加構建後操作步驟,選擇Editable Email Notification,在Project Recipient List那裡新增自己的郵箱,然後點選Advanced Setting,定位到Triggers,可以在Add Trigger處增加發郵件的條件

現在來測試,看是否能接收郵件。

  • 先在lzx1上改回目標目錄原來的許可權:
# chattr -i jenkins_test/				#讓該目錄可以寫入
  • 1
  • 回到瀏覽器,點選立即構建,檢視控制檯輸出

  • 到163郵箱進行檢視:

郵件收到,郵箱配置成功。


破解管理員密碼

人難免會犯些錯誤,如果我們不小心忘記了管理員密碼,我們如何去修改回來呢?

  • lzx上編輯admin配置檔案:
# cd /var/lib/jenkins/users/admin/

# ls
config.xml

# vim config.xml				#找到<passwordHash>這行,用下面一行替換掉原來的
<passwordHash>#jbcrypt:$2a$10$eJAMBW3qb/ijrFsSxkJnDOB747e0mFWSR03UmLCn96E4N7vL5BYzC</passwordHash>

這樣你的密碼就會被重置為123456啦
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 重啟服務,進入瀏覽器介面修改新的管理員密碼:
# systemctl restart jenkins				#需要重啟服務,才能使用123456去登入
  • 1

回到瀏覽器介面,使用123456去登入,系統管理管理使用者 → admin右側設定齒輪圖示,設定新的管理員密碼,應用、儲存即可