使用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下,只需要執行
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的首頁了

使用Jenkins自動部署nodejs應用 - snoopyxdy - snoopyxdy的博客
三、配置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' 在地址欄,即可手動重啟。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM