jenkins自動構建、自動部署

0.認識jenkin

Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。

0.1我們爲什麼需要做?

目前我們的前端項目部署在三臺linux服務器上,每一次版本升級,需要逐一登錄每一臺服務器,到指定的目錄下-> git pull -> npm install -> pm2 restart project_name,一臺服務器上可能需要1-2min,發佈效率非常低,發佈過程對線上環境可能有短暫的影響。如果使用自動化發佈,只要提交代碼,觸發構建條件,讓jenkins自動幫我們發佈,整個發佈的過程基本上能做到秒發(42s),對線上幾乎沒有影響,在用戶無感知的情況下,線上環境得到更新。能夠修復人爲發佈過程帶來的錯誤,解放開發人員的雙手。

0.2jenkins構建原理概述

  • 在代碼倉庫創建webhook(web鉤子)用於鏈接jenkins服務器

  • 研發push代碼到g倉庫後,倉庫會通過設置好的web鉤子推送一個json數據到jenkins服務器

  • jenkins服務器在接受到這個信息後,根據配置設置的內容進行判斷,是否啓用自動構建。如:是否是指定的分支push的代碼等

  • Jenkins通過設置好的判斷後,啓用自動構建,進行相關的打包操作,jenkins有一個工作區,一般在root/.jenkins/workspace下,裏面存放着拉取下來的源代碼和打包好的包文件。Jenkins在同一任務重複構建時,是會先清理掉舊的項目文件,所以不用擔心垃圾文件越來越多。只有項目越多文件越多

  • Jenkins一般是通過ssh將打包好的文件發送到目標服務器(部署服務器)的指定目錄,或者在遠程服務器執行commond

sXFr60.png

1.jenkens的安裝

執行以下指令安裝

  • 1.yum install -y java 安裝java環境

  • 2.wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

  • 3.sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

  • 4.yum install -y jenkins

  • 5.vi /etc/sysconfig/jenkins 修改JENKINS_USER,這裏默認是jenkins 需要修改爲root 防止後面jenkins操作的權限問題導致構建失敗

  • 6.service jenkins start/stop/restart //重啓

  • 6.1 cat /var/lib/jenkins/secrets/initialAdminPassword //獲取安裝密碼

  • 7.在瀏覽器地址欄輸入ip+端口(8080)

  • 8.輸入6.1的密碼到安裝界面

  • 9.在安裝界面選擇->推薦安裝

  • 10.設置用戶 username password

sTUjpT.png

2.jenkens服務器配置(gitee)

2.0基本的插件

  • jenkens->插件管理-> 搜索且添加 Publish Over SSH,Nodejs,gitee,釘釘四個插件,安裝完後重啓。
  • 全局工具配置->NodeJS->添加別名(node_js)-> 使用默認配置->保存

2.1配置釘釘機器人

  • 系統配置->釘釘配置

  • 從釘釘羣裏添加一個機器人,複製出hooks代碼

sTJwrR.png

2.2配置gitee

  • 1.系統配置-> git配置

  • 2.添加證書令牌和gitee地址

鏈接名:gitee
Gitee域名URL: https://gitee.com
證書令牌:  https://gitee.com/profile/personal_access_tokens 證書令牌的私人地址生成後請保存,因爲只顯示一次

sTYKJO.png

2.3 Publish over SSH(如果沒有負載的項目可以不需要操作這一步)

這個的作用是用來遠程連接其他服務器的,如一個git項目同時部署在三臺服務器上,構建時通過連接其他遠程服務,拉取gitee代碼,使得各個服務器代碼保持同步的更新,如果項目只放在一個服務器上,這一步沒有必要配置了!!!

  • 系統配置->Publish over SSH

  • 新增一臺服務信息

	SSH Servers:
    name: 95.169.7.64 //遠程服務叫什麼,一般取ip地址方便使用
    Hostname: 95.169.7.64 //遠程服務器的ip
    Username: root  //登錄遠程服務器的用戶名
 	Remote Directory: /  //登錄遠程服務器後默認的目錄在哪一般寫"/",且是必填
    Passphrase / Password  //勾選使用賬號密碼,填寫遠程服務器的賬號密碼。
    Port: 連接遠程服務器的端口號(默認是22)

DJ6EEd.md.png

2.4構建項目

  • 1.jenkens->新建->項目名稱:nuxt-ci 自己取

  • 2.構建一個自由風格的項目

  • 3.General項目的基本信息

  • 4.設置源碼管理

1.Repository URL:https://gitee.com/xiuxiumomo/nuxt-ci.git
2.Credentials:xiuxiumomo/***  //這裏是開發者信息如果,沒有,請點擊右邊的添加按鈕->用戶名密碼方式創建->輸入自己的gitee賬號祕密
3.指定分支:master-build  //nuxt項目只需要構建打包後的文件即可

DJ6VUA.md.png

  • 5.配置構建觸發器選Gitee

觸發器,顧名思義就是在什麼條件下,需要讓jenkins去構建項目
1.勾選 需要在 Gitee webhook 中填寫 URL: http://193.112.176.177:8080/gitee-project/nuxt-ci,其他的使用默認值無需改動

2.允許觸發構建的分支,勾選根據分支名過濾,指定master-build,因爲項目分支很多,不希望任何分支提交都觸發構建。

3.點擊生成webhook密碼,這個密碼就是倉庫和服務器連接的關鍵所在

4.在gitee該項目下添加webhook密碼

sTN5ZR.png

DJ6FDe.md.png

  • 6.構建環境 直接選:Provide Node & npm bin/ folder to PATH

該node環境就是上面添加的全局環境

DJ6CjO.md.png

  • 7.執行構建

1.執行shell

cd /mnt/project/xxx

git pull

npm install 

pm2 restart all

2.如果項目在多臺服務器,還需要添加多個構建步驟

DJ6kHH.md.png

3.注意事項目

  • 如果服務器開啓防火牆,需要開發jenkins的端口號這裏是(8080)

  • firewall-cmd --zone=public --add-port=8080/tcp --permanent

  • firewall-cmd --reload

4.卸載jenkins

  • 1、rpm卸載 rpm -e jenkins

  • 2、檢查是否卸載成功 rpm -ql jenkins

  • 3、徹底刪除 find / -iname jenkins | xargs -n 1000 rm -rf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章