0%

【CI CD實作】透過Github Webhook觸發Jenkins實現CI&CD(四)

前言

在前面的文章中,我們已經成功設置好了Jenkins並讓Jenkins擁有sudo權限能更讓我們做更多事情了。
接下來就準備進到重頭戲,開始設定GitHub Webhook並觸發Jenkins來將專案Clone下來後,實現CI/CD吧!

設定Github Webhook

首先登入到 GitHub,點選你希望更新時能透過 GitHub Webhook 觸發 Jenkins 的 Repository,點選 Settings 選取 Webhooks,再點選「add webhook」後輸入 <你的Jenkins Server>/github-webhook/

註:網址最後面一定要加上/github-webhook/

這時候設定完後,返回後會發現會有一個錯誤的圖案,這是因為Github還沒有跟我們的Jenkins進行連接,等到第一次Clone後就會是綠燈了,請放心。

接著我們回到Jenkins

Jenkins 設定

首先在 Jenkins 首頁點選「New Item」:

點選 Pipeline 後輸入你的Pipeline名稱:

接著進入Configure後,我們先找到 General
勾選「GitHub project」然後貼上你的 GitHub Repository URL

Configure — Build Triggers:
選取「GitHub hook trigger for GITScm polling」

Configure — Pipeline:
接下來就可以開始設定當觸發Jenkins將專案拉下來之後,我們要做哪些事情。
Pipeline一般來說我們可以分為三個階段:Buid、Test、Deploy
當然你也可以自定義各種階段,基本上每一個階段就只是將內容分離出來,讓你比較好知道現在執行到哪裡,以及每一階段執行所需時間如何。

這裡與GitLab Runner最大不同在於每一階段產生的檔案都會保留,非常方便,不用再寫多餘的Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pipeline {
agent any

stages {
stage('Build') {
steps {
echo '打包專案'
}
}
stage('Test') {
steps {
echo '可以執行一些自動化測試項目'
}
}
stage('Deploy') {
steps {
echo '最後執行遠端部署指令'
}
}
}
}

而由於筆者本身使用.NET6進行API開發,因此這邊同時也放上.NET版本給各位參考一下。但由於礙於公司機密,所以拿掉不少東西,再請各位多多包涵

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'cd API'
sh 'dotnet build'
}
}
stage('Deploy') {
steps {
sh 'sudo systemctl stop API.service'
sh 'sudo rm -rf /專案存放位置'
sh 'sudo mkdir /專案存放位置'
sh 'sudo cp -r /專案存放位置. /Server 目錄位置'
sh 'sudo systemctl start API.service'
}
}
}
}

到這裡基本上就完成的差不多了,最後我們實際上將Code推倒Github試試看:
我們可以注意到整體速度滿快的,從Build、Deploy 平均只花了10秒就完成。

以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教:)

有任何家教、案子 或技術相關問題 請都歡迎聯繫我

http://www.zhenghui.idv.tw/