jenkins + GitHub 實現專案自動化部署

一個人的江湖發表於2020-05-20

伺服器配置:

  • 作業系統:CentOS 7.6 64位
  • CPU:1核
  • 記憶體:2GB
  • 公網頻寬:1Mbps

一、安裝 Java SDK

1、進入根目錄,檢視是否有 Java 環境

$ cd /
$ java -version

有環境:

無環境:

2、若已經有環境,則直接去安裝 nginx,若無環境,這裡我們安裝 java-1.8.0

// 檢索 `yum` 中有沒有 `java1.8` 的包
$ yum list java-1.8*

// 開始安裝
$ yum install java-1.8.0-openjdk* -y

// 檢視版本
$ java -version

二、安裝 nginx

1、通過 rpm 安裝 nginx

$ rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

$ sudo yum install -y nginx

2、安裝完成後一些資料夾位置和操作如下

// 啟動 nginx
$ nginx -c nginx.conf

// 網站檔案存放預設目錄
$ /usr/share/nginx/html

// 網站預設站點配置
$ /etc/nginx/conf.d/default.conf

// 自定義Nginx站點配置檔案存放目錄
$ /etc/nginx/conf.d/

// Nginx 全域性配置檔案
$ /etc/nginx/nginx.conf

// 重啟 nginx
$ nginx -s reload

// 基於 nginx 的靜態部署
$ server {
$     listen 80;
$     server_name _;
$     root /usr/share/nginx/html;
$     index Home.html;
$ }

3、安裝完畢之後,我們需要啟動 nginx,啟動成功後,訪問伺服器的 ip 地址,如下圖即成功

三、安裝及啟動 jenkins

1、下載安裝 jenkins

$ wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.222.3-1.1.noarch.rpm

$ yum -y localinstall jenkins-2.222.3-1.1.noarch.rpm

2、jenkins 主要目錄

// jenkins 安裝目錄,WAR 包會放在這裡
/usr/lib/jenkins/

// jenkins 配置檔案,埠,JENKINS_HOME 等都可以在這裡配置
/etc/sysconfig/jenkins

// 預設的 JENKINS_HOME
/Nar/lib/jenkins/

// Jenkins 日誌檔案
/var/log/jenkins/jenkins.log

3、啟動並配置 jenkins

進入配置檔案將啟動使用者修改為 root,預設是 Jenkins

$ vim /etc/sysconfig/jenkins

...
JENKINS USER = "root"
...
// 啟動Jenkins
$ systemct1 start jenkins
// 關閉 jenkins
$ systemct1 enable jenkins

在瀏覽器輸入 http://你的ip地址:8080,進入以下介面即成功

4、根據介面提示資訊去檢視密碼

$ cat /var/lib/jenkins/secrets/initialAdminPassword

5、將查到的密碼貼上到輸入框,點選繼續

6、出現如下安裝外掛的介面,選擇安裝推薦的外掛,等待安裝完畢

7、建立第一個使用者,例項配置保持預設即可,這樣我們就可以開始使用 jenkins

8、出現如下介面,那麼 jenkins 就安裝成功了

四、github 生成 Personal Access Token

1、github –> 頭像 –> Settings –> Developer settings –> Personal access tokens –> Generate new token

2、勾選如下圖所示,最後點選 generate token 生成令牌即可。

3、注意!生成令牌之後一點要記錄下來,因為只顯示一次

五、github 設定 GitHub webhooks(具體需要持續整合的專案),新建或者設定現有專案的 webhooks 選項,url:部署的伺服器的 IP + 埠 + github-webhook

六、設定 jenkinsgithub 配置

1、jenkins 建立一個新任務,填寫你的任務名稱,並選擇構建自由風格專案(很奇怪為什麼第一條沒有漢化 -.-)

2、Manage Jenkins –> Configure System

3、找到 GitHub 選項 –> 新增 Github 伺服器 –> GitHub Server

4、勾選 “管理 Hook”,新增 –> Jenkins

5、在彈出的視窗中,如下圖配置,這裡需要用到之前生成的令牌

6、選擇生成的憑證,測試 jenkins 連線 github 伺服器,如下圖所示則配置成功,記得在頁面底部儲存配置。

七、設定 jenkins 的專案配置

1、進入該專案的配置項

2、選擇 github 專案,並填入專案 URL(複製你瀏覽器上的地址即可)

3、在 原始碼管理下選擇 git,並輸入 Repository URL(克隆下載你專案的地址)

4、出現上圖中的錯誤,是我們沒有安裝 git 的原因。

// 監測是否安裝了 git
$ rpm -qa | grep git

// 安裝 git
$ yum install git -y

5、重新重新整理 jenkins 頁面,重新填入 url,可以看到錯誤已經消失。

接著我們選擇 Credentials,若下拉選項中有,則直接選擇即可。

若沒有,點選新增 –> jenkins,新增一個 Username with passwrod 型別的許可權使用者,直接用 github 的登陸名稱和密碼建立。

新增完之後會出現下拉選項,最終配置如下圖所示。

6、構建觸發器 + 構建環境 + 繫結配置

點選新增並選擇 secret text 選項,在新出現的選項中選擇新增的許可權使用者

7、構建配置,新增執行 shell

既然可以執行 shell 命令,我們先來執行 pwd,看下預設的工作目錄是在哪裡。

儲存後,我們點選立即構建,就會在 build history 下面看到本次構建的 ID(藍色即構建成功,紅色即失敗)

點選構建 ID 右邊的小三角,選擇控制檯輸出。

可以看到 jenkins 的預設工作目錄在 /var/lib/jenkins/workspace/ceshi

8、編寫 shell 命令。

不同的前端所用的技術框架是不一樣的,所以這裡需要根據你自己的專案來進行配置。
這裡我以打包一個簡單的 h5 頁面為例,構建打包程式碼檔案並解壓到 nginx 的指定目錄,命令如下:

// 當前目錄
$ pwd

// 壓縮所有檔案
$ tar -zcvf ceshi.tar.gz *

// 將打包的壓縮檔案解壓到 nginx 對映目錄
$ tar -zxvf /var/lib/jenkins/workspace/ceshi/ceshi.tar.gz -C /usr/share/nginx/html 

$ cd /var/lib/jenkins/workspace/ceshi

// 刪除專案打包後的殘留
$ rm -f *

八、測試配置結果

還記得我們之前配置 nginx 成功後的頁面嗎,就是下面這個,現在我們隨便寫一個頁面來替換掉他。

將改動的程式碼提交到 master 分支,可以看到 Jenkins 會自動構建並新增一條構建記錄,然後我們訪問你的伺服器 IP,可以看到頁面已經改變

參考文獻:

部署Jenkins
一套真實前端開發環境搭建+可持續整合+自動化部署實踐(第一篇環境搭建配置)
一套真實前端開發環境搭建+可持續整合+自動化部署實踐(第二篇 jenkins關聯 GitHub自動打包部署)
jenkins 的引數化構建
GitLab+Jenkins實現持續整合+自動化部署

本作品採用《CC 協議》,轉載必須註明作者和本文連結

乾坤未定,你我皆是黑馬

相關文章