通過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代碼