使用Jenkins自動部署nodejs應用

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

一、經過ssh登陸服務器
二、進入nodejs目錄
三、執行:git pull 命令拉取最新代碼
四、執行:npm install 安裝新依賴
五、執行:pm2 restart all 從新啓動全部nodejs進程
若是咱們只有一臺機器,而且更新不是很頻繁,彷佛這樣的操做仍是能夠接受,可是若是咱們有4臺nodejs應用的服務器,每次的代碼改動將是災難!
好在咱們有Jenkins幫助咱們作這些事情,Jenkins是一個能夠自動遠程部署,執行遠程腳本命令的工具,它被稱爲持續集成工具,咱們能夠經過docker來快速搭建一個Jenkins服務。
 
1、安裝docker,拉取images,啓動container
 
在centos7下,只須要執行
yum install docker
service docker start
ps -ef|grep docker

在centos6下,須要分別執行node

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的containerpython

mkdir /var/jenkins_home
docker run -d --name myjenkins -p 49001:8080 -v /var/jenkins_home:/var/jenkins_home jenkins

 

2、安裝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的首頁了nginx

使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
3、配置jinkens
咱們首先須要進入jinkens添加用戶,這裏不累述了,根據提示一步步便可完成。
而後咱們要安裝插件,依次進入:
系統管理 -> 插件管理 -> 高級(選項卡)-> 底部當即獲取按鈕
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 稍等片刻,就能夠把可用插件更新下來,而後咱們選擇安裝以下幾個插件:
GIT client plugin
GIT plugin
Git server plugin
GitHub API Plugin
GitHub plugin
SSH Credentials Plugin
SSH plugin
Publish Over SSH

安裝完成後,從新啓動 jenkins。若是沒法自動重啓,能夠輸入 '/restart' 在地址欄,便可手動重啓。git

4、添加remote計算機
咱們jenkins是安裝在docker中的,因此就算部署到本機,對於jenkins也是remote外部的機器,須要使用ssh來鏈接,咱們須要添加ssh主機,來讓jenkins聯入。
依次進入  系統管理 -> 系統設置
以下圖增長remote server,這個是增長ssh remote 插件的服務器
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 
下圖是增長遠程拷貝文件的remote server
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 
 
5、建立項目
我如今在github上建了一個nodejs的helloworld項目:
咱們須要在jenkins中也建立一個相應的項目來,依次點擊:新建 ->  取名爲 nodejsPublish
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 進入項目,點擊配置,咱們就能夠對這個項目進行配置,讓它自動部署
一、設置 git 倉庫路徑:
以下圖,由於是公共倉庫,因此不須要驗證用戶名,密碼:
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 
二、構建完畢以後,將代碼打包保存
咱們先以下圖,增長一個構建完畢的shell腳本執行
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
而後些以下圖腳本,打包代碼,而後移動到workspace目錄下
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
三、接着咱們須要鏈接到部署服務器上,將原來的服務暫時暫停,刪除上一次部署的壓縮包,選擇添加遠程shell腳本執行,以下圖:
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 
寫以下腳本,將pm2服務中止,這裏你們能夠根據本身的要求暫停腳本
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 四、最後咱們要把打包好的代碼發送到服務器上,而後執行安裝依賴包操做,而且啓動nodejs服務,選擇經過ssh發送文件並執行命令到遠程服務器,如圖:
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 下圖的 source files 的默認當前路徑就是workspaces,remote directory的當前路徑就是以前添加服務器設置的,這裏我設置爲 /var/nodejs
下面的命令很簡單,解壓代碼,執行依賴包安裝,而後經過pm2啓動nodejs服務。
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 
五、開始構建
配置好上述命令以後,咱們點擊保存,而後點擊當即構建,出現藍色的球,就表示構建成功,紅色的球表示構建失敗,黃色的球表示執行構建命令失敗,以下圖,就是正在構建和發佈:
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 
 
不論構建成功仍是失敗,咱們能夠經過查看控制檯輸出看到構建的結果:
使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
 
若是咱們有多臺設備,就只須要配置一次,而後之後每次有代碼變動,手動點擊當即構建便可自動部署到目標服務器,免去咱們枯草的重複勞動。固然其餘語言,例如python,php都是能夠這樣來部署的。
相關文章
相關標籤/搜索