天天看點

使用Jenkins自動部署nodejs應用 (轉載)

想必部署過nodejs應用的朋友都有過這樣的經曆:

1、通過ssh登入伺服器

2、進入nodejs目錄

3、執行:git pull 指令拉取最新代碼

4、執行:npm install 安裝新依賴

5、執行:pm2 restart all 重新啟動所有nodejs程序

如果我們隻有一台機器,并且更新不是很頻繁,似乎這樣的操作還是可以接受,但是如果我們有4台nodejs應用的伺服器,每次的代碼改動将是災難!

好在我們有Jenkins幫助我們做這些事情,Jenkins是一個可以自動遠端部署,執行遠端腳本指令的工具,它被稱為持續內建工具,我們可以通過docker來快速搭建一個Jenkins服務。

一、安裝docker,拉取images,啟動container

在centos7下,隻需要執行

<code>yum </code><code>install</code> <code>docker</code>

<code>service docker start</code>

<code>ps</code> <code>-ef|</code><code>grep</code> <code>docker</code>

在centos6下,需要分别執行

<code>yum </code><code>install</code> <code>sudo</code>

<code>sudo</code> <code>yum </code><code>install</code> <code>-y epel-release</code>

<code>sudo</code> <code>yum </code><code>install</code> <code>-y docker-io</code>

進入 jenkins 的官方docker鏡像位址:

<a href="https://registry.hub.docker.com/_/jenkins/" target="_blank">https://registry.hub.docker.com/_/jenkins/</a>

然後根據說明執行:

<code>docker pull jenkins</code>

拉取好鏡像之後,我們先建立目錄,然後啟動docker的container

<code>mkdir</code> <code>/var/jenkins_home</code>

<code>docker run -d --name myjenkins -p 49001:8080 -</code><code>v</code> <code>/var/jenkins_home</code><code>:</code><code>/var/jenkins_home</code> <code>jenkins</code>

二、安裝nginx

安裝并啟動nginx,把如下代碼放在配置檔案中,添加一個server節點,反向代理到docker

<code>upstream app {</code>

<code>    </code><code>server 127.0.0.1:49001;</code>

<code>}</code>

<code>server {</code>

<code>    </code><code>listen 80;</code>

<code>    </code><code>server_name jenkins.your-domain.com;</code>

<code>    </code><code>location / {</code>

<code>        </code><code>proxy_pass http:</code><code>//app</code><code>;</code>

<code>    </code><code>}</code>

這樣打開浏覽器我們就可以看到jenkins的首頁了

三、配置jinkens

我們首先需要進入jinkens添加使用者,這裡不累述了,根據提示一步步即可完成。

然後我們要安裝插件,依次進入:

系統管理 -&gt; 插件管理 -&gt; 進階(頁籤)-&gt; 底部立即擷取按鈕

 稍等片刻,就可以把可用插件更新下來,然後我們選擇安裝如下幾個插件:

<code>GIT client plugin</code>

<code>GIT plugin</code>

<code>Git server plugin</code>

<code>GitHub API Plugin</code>

<code>GitHub plugin</code>

<code>SSH Credentials Plugin</code>

<code>SSH plugin</code>

<code>Publish Over SSH</code>

安裝完成後,重新啟動 jenkins。如果無法自動重新開機,可以輸入 '/restart' 在位址欄,即可手動重新開機。

四、添加remote計算機

我們jenkins是安裝在docker中的,是以就算部署到本機,對于jenkins也是remote外部的機器,需要使用ssh來連接配接,我們需要添加ssh主機,來讓jenkins聯入。

依次進入  系統管理 -&gt; 系統設定

如下圖增加remote server,這個是增加ssh remote 插件的伺服器

下圖是增加遠端拷貝檔案的remote server

五、建立項目

我現在在github上建了一個nodejs的helloworld項目:

<a href="https://github.com/DoubleSpout/jenkinsNodejs" target="_blank">https://github.com/DoubleSpout/jenkinsNodejs</a>

我們需要在jenkins中也建立一個相應的項目來,依次點選:建立 -&gt;  取名為 nodejsPublish

 進入項目,點選配置,我們就可以對這個項目進行配置,讓它自動部署

1、設定 git 倉庫路徑:

如下圖,因為是公共倉庫,是以不需要驗證使用者名,密碼:

2、建構完畢之後,将代碼打包儲存

我們先如下圖,增加一個建構完畢的shell腳本執行

然後些如下圖腳本,打包代碼,然後移動到workspace目錄下

3、接着我們需要連接配接到部署伺服器上,将原來的服務暫時暫停,删除上一次部署的壓縮包,選擇添加遠端shell腳本執行,如下圖:

寫如下腳本,将pm2服務停止,這裡大家可以根據自己的要求暫停腳本

 4、最後我們要把打包好的代碼發送到伺服器上,然後執行安裝依賴包操作,并且啟動nodejs服務,選擇通過ssh發送檔案并執行指令到遠端伺服器,如圖:

 下圖的 source files 的預設目前路徑就是workspaces,remote directory的目前路徑就是之前添加伺服器設定的,這裡我設定為 /var/nodejs

下面的指令很簡單,解壓代碼,執行依賴包安裝,然後通過pm2啟動nodejs服務。

5、開始建構

配置好上述指令之後,我們點選儲存,然後點選立即建構,出現藍色的球,就表示建構成功,紅色的球表示建構失敗,黃色的球表示執行建構指令失敗,如下圖,就是正在建構和釋出:

不論建構成功還是失敗,我們可以通過檢視控制台輸出看到建構的結果:

如果我們有多台裝置,就隻需要配置一次,然後以後每次有代碼變更,手動點選立即建構即可自動部署到目标伺服器,免去我們枯草的重複勞動。當然其他語言,例如python,php都是可以這樣來部署的。

本文轉自 zbill 51CTO部落格,原文連結:http://blog.51cto.com/dek701/1966929,如需轉載請自行聯系原作者

繼續閱讀