jenkins+docker+nodejs專案的自動部署環境(案例)
阿新 • • 發佈:2018-12-26
介紹
jenkins+docker+nodejs 自動部署
亮點
- 採用shell自定義指令碼,控制整合部署環境更加方便靈活
- 如果伺服器更換,重新部署的工作量會比較小
- 涉及的docker命令,會有講解(不知道算不算亮點)
前提
- 程式碼通過gitlab管理,放在了碼雲上(放在github或者其他平臺也都可以)
- 伺服器用的亞馬遜aws(阿里雲,青雲也一樣)
- 伺服器用的ubuntu 16.04 (伺服器系統不同,只是某些shell命令不同而已,windows伺服器使用者,呃,我敬你是條漢子)
- 客戶端用的mac
- docker映象平臺為dockerhub
準備
- 伺服器開通SSH
- 伺服器安裝Docker
- 掌握基本的shell命令(本文出現的shell命令都會進行說明,cd啥的就不說了...)
開始
docker執行jenkins
-
伺服器拉取docker jenkins映象:
docker pull jenkins:latest
- 拉取jenkins latest版本映象
- docker pull jenkins:2.7.4 拉取jenkins 2.7.4版本映象
-
伺服器執行dokcer jenkins容器:
sudo docker run -d --name jenkins_node -p 49002:8080 -v /var/jenkins_node:/var/jenkins_home jenkins:latest
- 這句命令的意思是:在後臺執行一個基於jenkins:latest映象的容器, 容器的名字叫做 jenkins_node ,把容器的8080埠對映為49002埠,並且把伺服器上的/var/jenkins_node目錄掛在到docker容器上的/var/jenkins_home目錄
-d
後臺執行docker容器- 如果不加
-d
則,容器執行會佔用此終端,如果終端關閉,則容器也相應關閉,jenkins就無法訪問了。加上-d
,容器會在後臺執行。
- 如果不加
--name
為容器起個別名- 如果不起別名,則系統會預設分配一個隨機別名,類似gklasd_sdfwe。起了別名後,後續會通過該別名管理該docker容器,也就是管理jenkins。
-p
docker容器埠對映- jenkins服務是執行在docker裡的,docker預設不對外暴露埠的
-v
檔案掛載- 如果不掛載,則jenkins所有log、使用者配置檔案都會在docker容器內,如果容器銷燬,則jenkins得重新配置一遍。掛載出來方便jenkins遷移以及管理
- 執行成功截圖
jenkins run
-
檢視你伺服器上的的/var/jenkins_node資料夾,當出現下圖所有檔案時,則說明jenkins啟動成功,否則再等等...30秒左右即可
-
-
- 開啟initialAdminPassword檔案,複製檔案內容 initialAdminPassword檔案位置為:
為了方便,用mac演示一下
-
- initialAdminPassword檔案內容貼上到Administrator password裡
-
如果對於jenkins比較熟悉,下面7,8自己隨意
-
等...
- 設定admin user
node專案配置
jenkins配置
外掛安裝
- 首頁,點選系統管理 --> 管理外掛
- 選擇“可選外掛”
- 右上角過濾SSH,--> 選擇Publish Over SSH -->點選 直接安裝
- 等待安裝完成
系統設定
- 首頁,點選系統管理 --> 系統設定
- 拉到最下面找到 "Publish over SSH" , 設定伺服器的SSH資訊
專案配置
- 首頁,點選左上角”新建”
- General: 只填 專案名稱即可
- 原始碼管理: 填寫Git資訊
- 如果Git專案為私有專案,則需要點選Add新增你的Git賬號,完成之後在這裡選擇你的Git賬號
- 如果Git專案為私有專案,則需要點選Add新增你的Git賬號,完成之後在這裡選擇你的Git賬號
-
構建環境:參照下圖
-
- 圖中程式碼如下:
sudo docker stop node || true \ && sudo docker rm node || true \ && cd /var/jenkins_node/workspace/node \ && sudo docker build --rm --no-cache=true -t node - < Dockerfile \ && sudo docker run -d --name node -p 3000:3000 -v /var/jenkins_node/workspace/node:/home/project node
-
-
儲存,返回到首頁
- 選擇剛剛建立的專案,點選"立即構建"
- 此時伺服器本地硬碟上,/var/jenkins_node/workspace/下應該有node(你建立的jenkins專案名)資料夾
- /var/jenkins_node/ 目錄內容應該如下圖
為了方便檢視,繼續用mac演示目錄
自動部署
如果想要git pull,jenkins就自動部署,那就繼續往下看...
- jenkins --> 首頁 --> 使用者
- 設定 --> 點選 "show API Token"
- 複製API Token內容
- 返回首頁 --> node --> 配置 --> 構建觸發器 --> 選擇 "觸發遠端構建" -->貼上"API Token"內容到"身份驗證令牌"
- 登陸git平臺,找到你的專案,選擇管理,選擇webhook
- URL 中 node 請替換為你在jenkins上建立的專案名稱
- token為複製的 API Token內容
- 此時你git push,會發現jenkins並沒有自動構建,是因為jenkins的安全策略導致的,還需要如下設定
- jenkins首頁,選擇 系統管理-->Configure Global Security(系統設定下面那個) 進行如下設定
- jenkins首頁,選擇 系統管理-->Configure Global Security(系統設定下面那個) 進行如下設定
至此,已完成 git push 後,jenkins 自動構建自動部署。
對於Docker感興趣,可以看下這篇文章:Docker常用命令