1. 程式人生 > >node項目自動化部署--基於Jenkins,Docker,Github(3)自動化部署

node項目自動化部署--基於Jenkins,Docker,Github(3)自動化部署

工作 控制 pub del 可能 color png github上 over

GitHub倉庫

由於現在的代碼基本上都是多人合作開發,所以肯定會用到像 git 這樣的版本控制工具

所以這裏使用 GitHub 來做一個演示

首先我們需要在github上新建一個倉庫

點擊New來新建一個倉庫

技術分享圖片

輸入一個名字

以及描述後點擊 create

技術分享圖片

然後將代碼上傳到GitHub上

這裏我上傳的是一個簡單的 hello world 的demo

技術分享圖片

到這裏要部署的代碼就準備完成了,接下來需要編寫 Dockerfile 來告訴 docker 該怎麽打包我們的項目

Dockerfile編寫

首先我們在項目的根目錄下添加一個 Dockerfile 文件

技術分享圖片

該文件代碼如下:

FROM node:alpine
MAINTAINER [email protected]
ENV TZ = Asia/Shanghai

#將代碼移動到容器中的 /ndoe 路徑下
COPY . /node

#指定工作目錄
WORKDIR /node

#安裝PM2
RUN npm install pm2 -g

#指定時區
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#暴露容器的3000端口
EXPOSE 3000

#啟動服務
CMD [ "pm2-runtime", "npm", "--", "start" ]

這裏需要註意,最好在 package.json中完成依賴的安裝,不然路徑上很可能出現問題

完整項目代碼:https://github.com/lhy2813419591/JenkinsTest

上述代碼中 Expose 暴露的端口就是你的項目監聽的端口

至於時區的設置根據大家的需求自己決定是否設置

這裏我是使用了 在鏡像中 使用 pm2 來托管我的項目

雖然docker可以給我們一個相對獨立的環境,但平滑啟動等功能並不提供,所以這裏我使用了 pm2 來啟動項目

Jenkins構建

剛才初步的準備工作已經完成了

接下來就需要創建 Jenkins 的構建任務

技術分享圖片

這裏輸入構建任務的名稱

選擇自由風格的項目,然後點擊確定進入下一步

技術分享圖片

然後勾選限制項目運行的節點

輸入你希望該構建運行的服務器節點(在之前 over publish中添加的服務器)

技術分享圖片

輸入過後會告訴你選中了幾個節點

技術分享圖片

然後就是源碼管理選擇 git

技術分享圖片

沒有憑據的需要先添加憑據

然後設置構建觸發器,這裏如果需要當git上面有新的 push 的時候就自動構建

則需要設置構建出發器,不需要的小夥伴可以自行跳過

技術分享圖片

身份驗證令牌設置如下:

  jenkins --> 首頁 --> 用戶

技術分享圖片

設置 --> 點擊 "show API Token"

技術分享圖片

技術分享圖片

技術分享圖片

這樣就獲取了一個 Api Token 將其復制到身份驗證令牌處即可

設置完身份驗證令牌後我們需要進入 github進行相關設置

進入setting 後選擇 webhook

技術分享圖片

然後添加 webhook

技術分享圖片

技術分享圖片

這裏的url在 Jenkins 上可以看到

技術分享圖片

這個路徑復制到github

技術分享圖片

如果出現403則需要設置一下用戶權限

技術分享圖片

在全局安全設置中允許匿名用戶操作

我這裏為了方便就直接設置為所有用戶可以做任何事

技術分享圖片

然後回到github

點擊redeliver

技術分享圖片

然後看到201就說明配置完成了

技術分享圖片

這樣我們就只差最後的執行腳本了

我們回到 Jenkins 繼續進行設置

接下來要設置的是構建環境

技術分享圖片

這裏需要填寫的實際上只用填寫遠程工作目錄以及構建完成後執行的命令行語句

cd /root/jenkins/workspace/JenkinsTest #訪問指定的遠程工作目錄
sudo docker stop node #停止名為node的容器
sudo docker rm node #移除名為node的容器
sudo docker rmi node #移除名為node的鏡像
sudo docker build --rm --no-cache=true  --tag node /root/jenkins/workspace/JenkinsTest #build鏡像,並命名為node
sudo docker run -dit  --name node -p 9001:3000 -v /root/jenkins/workspace/JenkinsTest:/node node #運行名為node的鏡像,將容器的3000端口映射到9001端口

如下圖所示

技術分享圖片

保存後點擊立即構建即可執行,不需要push來觸發

然後訪問部署節點的 9001 端口就能訪問自動構建的 express 項目

技術分享圖片

如果步驟沒有問題,但無法訪問項目建議前往服務器的控制臺查看安全組規則,開放對應的端口

查看項目的日誌信息

docker logs node #node是容器的name

完整代碼:https://github.com/lhy2813419591/JenkinsTest

node項目自動化部署--基於Jenkins,Docker,Github(3)自動化部署