1. 程式人生 > >打造jenkins+docker+nodejs專案的自動部署環境(webhook)

打造jenkins+docker+nodejs專案的自動部署環境(webhook)

一步一步打造jenkins+docker+nodejs專案的自動部署環境

介紹

jenkins+docker+nodejs 自動部署

亮點

  • 採用shell自定義指令碼,控制整合部署環境更加方便靈活
  • 如果伺服器更換,重新部署的工作量會比較小
  • 涉及的docker命令,會有講解(不知道算不算亮點)

前提

  1. 程式碼通過git管理,放在了碼雲上(放在github或者其他平臺也都可以)
  2. 伺服器用的亞馬遜aws(阿里雲,青雲也一樣)
  3. 伺服器用的ubuntu 16.04 (伺服器系統不同,只是某些shell命令不同而已,windows伺服器使用者,呃,我敬你是條漢子)
  4. 客戶端用的mac
  5. docker映象平臺為dockerhub

準備

  1. 伺服器開通SSH
  2. 伺服器安裝Docker
  3. 掌握基本的shell命令(本文出現的shell命令都會進行說明,cd啥的就不說了...)

開始

docker執行jenkins

  1. 伺服器拉取docker jenkins映象:docker pull jenkins:latest

    • 拉取jenkins latest版本映象
    • docker pull jenkins:2.7.4 拉取jenkins 2.7.4版本映象
  2. 伺服器執行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
  3. 檢視你伺服器上的的/var/jenkins_node資料夾,當出現下圖所有檔案時,則說明jenkins啟動成功,否則再等等...30秒左右即可



    • 開啟initialAdminPassword檔案,複製檔案內容 initialAdminPassword檔案位置為:

      為了方便,用mac演示一下
  4. initialAdminPassword檔案內容貼上到Administrator password
  5. 如果對於jenkins比較熟悉,下面7,8自己隨意


  6. 等...


  7. 設定admin user

node專案配置

jenkins配置

外掛安裝

  1. 首頁,點選系統管理 --> 管理外掛

  2. 選擇“可選外掛”

  3. 右上角過濾SSH,--> 選擇Publish Over SSH -->點選 直接安裝

  4. 等待安裝完成

系統設定

  1. 首頁,點選系統管理 --> 系統設定

  2. 拉到最下面找到 "Publish over SSH" , 設定伺服器的SSH資訊

專案配置

  1. 首頁,點選左上角”新建”

  2. General: 只填 專案名稱即可

  3. 原始碼管理: 填寫Git資訊

    • 如果Git專案為私有專案,則需要點選Add新增你的Git賬號,完成之後在這裡選擇你的Git賬號

  4. 構建環境:參照下圖


    • 圖中程式碼如下:
      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
  5. 儲存,返回到首頁

  6. 選擇剛剛建立的專案,點選"立即構建"
    • 此時伺服器本地硬碟上,/var/jenkins_node/workspace/下應該有node(你建立的jenkins專案名)資料夾
    • /var/jenkins_node/ 目錄內容應該如下圖

      為了方便檢視,繼續用mac演示目錄

自動部署

如果想要git push,jenkins就自動部署,那就繼續往下看...

  1. jenkins --> 首頁 --> 使用者

  2. 設定 --> 點選 "show API Token"

  3. 複製API Token內容

  4. 返回首頁 --> node(專案名稱) --> 配置 --> 構建觸發器 --> 選擇 "觸發遠端構建" -->貼上"API Token"內容到"身份驗證令牌"

  5. 登陸git平臺,找到你的專案,選擇管理,選擇webhook

    • URL 中 node 請替換為你在jenkins上建立的專案名稱
    • token為複製的 API Token內容
  6. 此時你git push,會發現jenkins並沒有自動構建,是因為jenkins的安全策略導致的,還需要如下設定
    • jenkins首頁,選擇 系統管理-->Configure Global Security(系統設定下面那個) 進行如下設定

至此,已完成 git push 後,jenkins 自動構建自動部署。

對於Docker感興趣,可以看下這篇文章:Docker常用命令