天天看點

jenkins git公有倉庫與私有倉庫釋出代碼

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>

![mark](http://oqz6pu8vi.bkt.clouddn.com/blog/20171120/163348636.png?imageslim)

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 -&gt; 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,如需轉載請自行聯系原作者