1 釋出php代碼
- jenkins已經搭建完成,現在開始來做一個php釋出代碼的任務
- 在釋出php代碼時先看看是否有兩個插件
<code>在系統管理-管理插件- 已安裝插件-</code>
<code>檢查是否有“Git plugin”和“Publish Over SSH”兩個插件,如果沒有,則需點選“可選插件”,找到它并安裝</code>
<code>[root@chy01 jenkins]</code><code># systemctl restart jenkins //重新開機服務</code>
- 需要生成一對密鑰對用來登入遠端機器(遠端機器即是釋出php代碼的機器)
<code>[root@chy01 ~]</code><code># cd /root/.ssh/</code>
<code>[root@chy01 .</code><code>ssh</code><code>]</code><code># ls</code>
<code>aaa authorized_keys boy.pub id_rsa jump known_hosts lf1.pub</code>
<code>aaa.pub boy config id_rsa.pub jump.pub lf1</code>
<code>//</code><code>我之前有生成過密鑰對在這我可以拿來直接用,你也可以根據自己的需求來重新生成</code>
- 之後在設定jenkins
<code>系統管理-系統設定-Publish over SSH 找到這一項,添加之前生成的密鑰對的私鑰即可</code>
<code>之後在将公鑰放在想要釋出php代碼的機器(簡稱遠端機器)我這邊放在了[root@chy ~]</code><code># cat .ssh/authorized_keys</code>
<code>這個機器上面</code>
<code>[root@chy01 ~]</code><code># ssh 192.168.212.10 測試可以登入到遠端的機器</code>

SSH Server,name自定義,Hostname填寫線上web伺服器的ip,Username填寫root,Remote Directory填寫/(根)
如果是多台web server,繼續點選“增加”,重複以上操作
- 建立新的任務
<a href="https://s3.51cto.com/oss/201711/22/722c81001d7cf47f08153d4e7b08d301.png-wh_500x0-wm_3-wmp_4-s_4107307767.png" target="_blank"></a>
<a href="https://s2.51cto.com/oss/201711/22/8f55534c9977d170c6a1ffd832229cf2.png-wh_500x0-wm_3-wmp_4-s_3405987822.png" target="_blank"></a>
Repository URL”填寫你項目的git位址,如果是公共項目可以不設定下面的參數,直接填寫一個git位址即可,若是私有項目(-none),需要填寫認證資訊,比如可以選擇 “SSH Username whith private key”,然後設定Username以及private key
“Branches to build” 預設為*/master,意思是釋出的分支為master,保持預設
<a href="https://s3.51cto.com/oss/201711/22/eb0866031c75800370c37e0280bc46dd.png-wh_500x0-wm_3-wmp_4-s_1179492456.png" target="_blank"></a>
“建構觸發器”和“建構環境”留白
- “建構”,選擇 “Send files or execute commands over SSH”
<a href="https://s1.51cto.com/oss/201711/22/e05726844c8277295bed48d317a4f5b3.png-wh_500x0-wm_3-wmp_4-s_2869468305.png" target="_blank"></a>
Remove prefix可以指定截掉的字首目錄,這裡留白即可,Remote directory指定遠端伺服器上代碼存放路徑,比如/data/wwwroot/www.aaa.com,Exec command為檔案傳輸完成後要執行的指令,比如可以是更改檔案權限的指令,設定完成後點選 “Add Transfer Set”,如果還有另外的機器,可以點選 “Add Server”重複以上操作
- 開始釋出代碼
<a href="https://s5.51cto.com/oss/201711/22/1d0ce9e85f96ecba5329b3fc501dd8a5.png-wh_500x0-wm_3-wmp_4-s_2890522697.png" target="_blank"></a>
- 檢視釋出的結果
<code>[root@chy ~]</code><code># ls /tmp/jenkins_test/</code>
<code>D11Z D13Z D15Z D18Z D20Z D22Z README.md</code>
<code>D12Z D14Z D17Z D19Z D21Z LICENSE </code>
<code>//</code><code>檢視已經釋出成功</code>
這裡需要注意下如果是在git上重新更新了一下檔案隻需要在點下“立即建構”就會更新在git上更新的項目的内容
(如上我們用的是git的公共的倉庫,可是我有一個私有的倉庫應該怎麼做呢?
- 需求:需要将discuz的代碼釋出到客戶機上(chy這台機器上)。
在這我們有三台機器:
chy(192.168.212.10)--這台是最後的客戶機檢視discuz釋出代碼用的機器
chy02(192.168.212.12)--這台是搭建的git的私有倉庫
chy01(192.168.212.11)--這台是要将discuz代碼上傳到私有倉庫的一台機器,我這邊需要上傳到私有倉庫然後jenkins用私有倉庫的位址釋出
如上的三台機器都是centos7
git的私有倉庫192.168.212.12 chy02(快速搭建)
<code>[root@chy02 ~]</code><code># yum install -y git </code>
<code>[root@chy02 ~]</code><code># useradd -s /usr/bin/git-shell git </code>
<code>[root@chy02 ~]</code><code># cd /home/git/</code>
<code>[root@chy02 git]</code><code># mkdir .ssh</code>
<code>[root@chy02 git]</code><code># touch .ssh/authorized_keys</code>
<code>[root@chy02 git]</code><code># chmod 600 .ssh/authorized_keys </code>
<code>[root@chy02 git]</code><code># chown -R git:git .ssh</code>
<code>[root@chy02 git]</code><code># vi .ssh/authorized_keys </code>
<code>放入公鑰,保證客戶機可以通路我們的git私有倉庫的服務端</code>
<code>[root@chy01 ~]</code><code># ssh [email protected]</code>
<code># cat /etc/motd </code>
<code>fatal: Interactive git shell is not enabled.</code>
<code>hint: ~</code><code>/git-shell-commands</code> <code>should exist and have </code><code>read</code> <code>and execute access.</code>
<code>Connection to 192.168.212.12 closed.</code>
到git的客戶機裡開始将discuz代碼上傳到我們的私有倉庫裡
<code>[root@chy01 ~]</code><code># cd /tmp</code>
<code>You have new mail </code><code>in</code> <code>/var/spool/mail/root</code>
<code>[root@chy01 tmp]</code><code># git clone [email protected]:/data/gitroot/sample.git</code>
<code>Cloning into </code><code>'sample'</code><code>...</code>
<code>warning: You appear to have cloned an empty repository.</code>
<code>[root@chy01 tmp]</code><code># cd sample/</code>
<code>[root@chy01 sample]</code><code># ls -la</code>
<code>total 12</code>
<code>drwxr-xr-x 3 root root 4096 Nov 22 00:14 .</code>
<code>drwxrwxrwt. 15 root root 4096 Nov 22 00:14 ..</code>
<code>drwxr-xr-x 7 root root 4096 Nov 22 00:14 .git</code>
<code>[root@chy01 sample]</code><code># vim discuzz.html</code>
<code>[root@chy01 sample]</code><code># git add discz.html </code>
<code>[root@chy01 sample]</code><code># git commit -m "daima"</code>
<code>[master d22de14] daima</code>
<code> </code><code>1 </code><code>file</code> <code>changed, 470 insertions(+)</code>
<code> </code><code>create mode 100644 discz.html</code>
<code>[root@chy01 sample]</code><code># git push</code>
<code>Counting objects: 3, </code><code>done</code><code>.</code>
<code>Compressing objects: 100% (2</code><code>/2</code><code>), </code><code>done</code><code>.</code>
<code>Writing objects: 100% (2</code><code>/2</code><code>), 252 bytes | 0 bytes</code><code>/s</code><code>, </code><code>done</code><code>.</code>
<code>Total 2 (delta 0), reused 0 (delta 0)</code>
<code>To [email protected]:</code><code>/data/gitroot/sample</code><code>.git</code>
<code> </code><code>a2ee2f6..d22de14 master -> master</code>
<code>如上是上傳discuz的代碼</code>
git私有倉庫檢視是否上傳
<code>[root@chy02 sample.git]</code><code># git log --pretty=oneline</code>
<code>b081942e4a9eed04ffe34e7b2a6796270f1fcc69 discuzz 代碼</code>
現在需要在jenkins裡下發discuz的代碼
- 如下是建立一個任務
<a href="https://s4.51cto.com/oss/201711/22/084d68c29b88580e625595264363e569.png-wh_500x0-wm_3-wmp_4-s_1608679932.png" target="_blank"></a>
- 建立git私有倉庫的資訊
<a href="https://s2.51cto.com/oss/201711/22/09cd2ddf4d2094ea2dadc462e0aac8dd.png-wh_500x0-wm_3-wmp_4-s_2689922747.png" target="_blank"></a>
- 如下的就與之前的公有倉庫的操作是一緻的,這裡就不細說了
<a href="https://s3.51cto.com/oss/201711/22/3c22e86b29810e7561d8a896201f62d2.png-wh_500x0-wm_3-wmp_4-s_2246334591.png" target="_blank"></a>
-最後就開始建構
- 在客戶機上檢視是否有建構的任務
<code>[root@chy ~]</code><code># cd /tmp/jenkins_test/</code>
<code>[root@chy jenkins_test]</code><code># ls</code>
<code>1.txt D12Z D14Z D17Z D19Z D21Z discuzz.html LICENSE 習題答案.txt</code>
<code>D11Z D13Z D15Z D18Z D20Z D22Z discz.html README.md</code>
<code>檢視到已有discuzz</code>
- 這裡需要再次注意下,如果是自己搭建的私有倉庫一定要記得每台機器上要有相應的密鑰。切記切記。
當然後期隻要是建構成功還需要發一封郵件提醒,來提升工作效率!!
本文轉自我不是瘦子51CTO部落格,原文連結:http://blog.51cto.com/chy940405/1984173,如需轉載請自行聯系原作者