想必部署過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下,只需要執行
yum install docker service docker start ps -ef|grep docker
在centos6下,需要分別執行
yum install sudo sudo yum install -y epel-release sudo yum install -y docker-io service docker start ps -ef|grep docker
進入 jenkins 的官方docker鏡像地址:
然后根據說明執行:
docker pull jenkins
拉取好鏡像之后,我們先創建目錄,然后啟動docker的container
mkdir /var/jenkins_home docker run -d --name myjenkins -p 49001:8080 -v /var/jenkins_home:/var/jenkins_home jenkins
二、安裝nginx
安裝並啟動nginx,把如下代碼放在配置文件中,添加一個server節點,反向代理到docker
upstream app { server 127.0.0.1:49001; } server { listen 80; server_name jenkins.your-domain.com; location / { proxy_pass http://app; } }
這樣打開瀏覽器我們就可以看到jenkins的首頁了

三、配置jinkens
我們首先需要進入jinkens添加用戶,這里不累述了,根據提示一步步即可完成。
然后我們要安裝插件,依次進入:
系統管理 -> 插件管理 -> 高級(選項卡)-> 底部立即獲取按鈕

GIT client plugin GIT plugin Git server plugin GitHub API Plugin GitHub plugin SSH Credentials Plugin SSH plugin Publish Over SSH
安裝完成后,重新啟動 jenkins。如果無法自動重啟,可以輸入 '/restart' 在地址欄,即可手動重啟。
四、添加remote計算機
我們jenkins是安裝在docker中的,所以就算部署到本機,對於jenkins也是remote外部的機器,需要使用ssh來連接,我們需要添加ssh主機,來讓jenkins聯入。
依次進入 系統管理 -> 系統設置
如下圖增加remote server,這個是增加ssh remote 插件的服務器

下圖是增加遠程拷貝文件的remote server

五、創建項目
我現在在github上建了一個nodejs的helloworld項目:
我們需要在jenkins中也創建一個相應的項目來,依次點擊:新建 -> 取名為 nodejsPublish

1、設置 git 倉庫路徑:
如下圖,因為是公共倉庫,所以不需要驗證用戶名,密碼:

2、構建完畢之后,將代碼打包保存
我們先如下圖,增加一個構建完畢的shell腳本執行

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




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

5、開始構建
配置好上述命令之后,我們點擊保存,然后點擊立即構建,出現藍色的球,就表示構建成功,紅色的球表示構建失敗,黃色的球表示執行構建命令失敗,如下圖,就是正在構建和發布:

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

如果我們有多台設備,就只需要配置一次,然后以后每次有代碼變更,手動點擊立即構建即可自動部署到目標服務器,免去我們枯草的重復勞動。當然其他語言,例如python,php都是可以這樣來部署的。