1. 程式人生 > >通過Jenkins發布php代碼

通過Jenkins發布php代碼

Jenkins 持續集成 發布代碼

筆記內容:通過Jenkins發布php代碼
筆記日期:2018-02-26

26.4/26.5 通過Jenkins發布php代碼

我們都知道Jenkins是一個用於持續集成的工具,所以本文簡單介紹一下如何通過Jenkins來發布php代碼到遠程的機器上,實驗環境如下:
兩臺機器,一臺安裝了Jenkins作為Jenkins服務器,一臺作為遠程的服務器:

  • 192.168.77.130 Jenkins服務器
  • 192.168.77.128 遠程服務器
  • 一個遠程的公開的git倉庫(php代碼在這個倉庫裏)

如果沒有安裝過Jenkins的話,可以參考我另一篇關於安裝Jenkins的文章。

在通過Jenkins發布php代碼之前,我們首先需要在Jenkins服務的web頁面上檢查一下 “Git plugin” 和 “Publish Over SSH” 兩個插件是否已安裝:

“系統管理” → “管理插件” → “已安裝”,然後搜索Git plugin看看是否已安裝,一般這個插件都是默認安裝的:
技術分享圖片

然後再搜索Publish Over SSH,可以看到如果沒有安裝是搜索不到的:
技術分享圖片

然後到 “可選插件” 裏安裝 Publish Over SSH 插件:
技術分享圖片

安裝完成:
技術分享圖片

重啟Jenkins服務:

systemctl restart jenkins.service

確保兩個插件都安裝好後,點擊“系統管理” → “系統設置”,下拉頁面,大概在網頁的最下面可以找到 “Publish Over SSH” :
技術分享圖片

然後在服務器上先生成一對密鑰:

[root@server ~]# ssh-keygen -f /root/.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:
75:f0:ac:f1:56:6d:f4:a8:9c:d5:57:9b:e8:e3:5f:83 root@server
The key‘s randomart image is:
+--[ RSA 2048]----+
|          .     o|
|           +  .==|
|          o +.+o*|
|         . *.= ..|
|        S . *o   |
|           .. o  |
|             E ..|
|              . o|
|               . |
+-----------------+
[root@server ~]# ls .ssh/
id_rsa           jenkins      jenkins.pub
authorized_keys  id_rsa.pub  
[root@server ~]# 

生成密鑰對後,首先把公鑰拷貝到遠程的機器上去,也就是把公鑰的內容粘貼到 .ssh/authorized_keys 文件裏,和我們之前配置遠程登錄的密鑰驗證是一樣的。

拷貝完公鑰之後,我們來使用以下命令手動測試一下能否通過ssh登錄遠程的機器:

ssh -i .ssh/jenkins 192.168.77.128

能正常登錄則代表沒有問題,如果出現讓你出入用戶密碼的情況則是密鑰沒有配置成功,配置成功的情況下登錄是不需要密碼的。

完成測試確保能夠正常通過ssh登錄遠程機器後,接著就是把私鑰的內容粘貼到 “Key” 這一欄裏:
技術分享圖片

然後完成遠程機器的配置,點擊 “Apply” 後如果不需要再繼續添加遠程機器則點擊 “保存” 即可:

技術分享圖片

註:Jenkins SSH Key 這一欄默認會使用Jenkins管理員admin賬戶的密碼,可以不填則設置為空密碼。


以上我們配置完了插件以及遠程機器,現在就可以開始新建任務了:
技術分享圖片
技術分享圖片

配置項目名稱與描述:
技術分享圖片

配置遠程倉庫的地址:
技術分享圖片

構建觸發器,以及構建環境都不需要配置,因為我們發布的是php代碼:
技術分享圖片

最後就是 “構建” ,最核心的一步,選擇 “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上的代碼發布到指定的服務器上:
技術分享圖片

構建中:
技術分享圖片

構建完成:
技術分享圖片

點擊查看輸出日誌:
技術分享圖片

輸出日誌如下:
技術分享圖片

到遠程機器上,看看是否已經存在jenkins_test這個目錄:

[root@client ~]# ll /tmp/jenkins_test/
總用量 108
drwxr-xr-x 2 nobody nobody    64 2月  26 15:04 D11Z
drwxr-xr-x 2 nobody nobody  4096 2月  26 15:04 D12Z
drwxr-xr-x 2 nobody nobody    23 2月  26 15:04 D13Z
drwxr-xr-x 2 nobody nobody  4096 2月  26 15:04 D14Z
drwxr-xr-x 2 nobody nobody  4096 2月  26 15:04 D15Z
drwxr-xr-x 2 nobody nobody    24 2月  26 15:04 D17Z
drwxr-xr-x 2 nobody nobody    73 2月  26 15:04 D18Z
drwxr-xr-x 2 nobody nobody   148 2月  26 15:04 D19Z
drwxr-xr-x 2 nobody nobody    80 2月  26 15:04 D20Z
drwxr-xr-x 2 nobody nobody  4096 2月  26 15:04 D21Z
drwxr-xr-x 2 nobody nobody   122 2月  26 15:04 D22Z
-rw-r--r-- 1 nobody nobody 18044 2月  26 15:04 LICENSE
-rw-r--r-- 1 nobody nobody   419 2月  26 15:04 README.md
[root@client ~]# 

如上,可以看到文件都同步成功了,而且文件的屬主屬組也是我們設置的nobody。之後只要遠程倉庫裏的源文件的內容發生改變,需要同步到線上則只需要點擊該任務的 “立即構建” 即可。

通過Jenkins發布php代碼