2019年2月1日 星期五

C#專案在Gitlab上建立CI/CD機制(上)


目前公司採用自建的gitlab作為原始碼管控

陸陸續續開始導入CI/CD的機制

本篇主要著重在windows的環境下建立一個支援gitlab的build server



首先就是要把程式上傳到gitlab上

版控這邊就不多做介紹

gitlab本身就有支援CI/CD的功能

需要在CI/CD的主機上安裝gitlab runner

所以流程就會如此圖所示:


這個簡易的流程就是開發者把程式推到gitlab(gitlab server)上

gitlab server會通知有安裝gitlab runner的機器(可以跟gitlab server不同台機器)

gitlab runner那台主機就會把gitlab最新的程式碼下載下來進行建置


這就是這篇要達成的目的:

本次測試的建置主機是一台windows環境的機器

所以就先去下載windows版的gitlab runner

官方gitlab runner下載位置
(支援多種作業系統,非常方便)

windows的版本下載下來就是一個執行檔:gitlab-runner-windows-amd64.exe


把他放在一個固定的位置後,就開始進行runner的註冊

在命令提示字元執行:gitlab-runner-windows-amd64.exe register


接下來會需要輸入一些問題

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )

 輸入你上傳gitlab的位址,例如官方網址:https://gitlab.com

Please enter the gitlab-ci token for this runner

需要到gitlab網頁上去找token 
(待會兒解釋)

Token Please enter the gitlab-ci description for this runner

輸入描述此runner的名稱,例如:build server runner

Please enter the gitlab-ci tags for this runner (comma separated):

可設定tag,用來區隔不同runner,例如:build-tag 
(晚點補充)

runner Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:

windows的環境請輸入:shell


runner所需設定的token需要在gitlab頁面查詢

到gitlab的專案頁面->settings->CI/CD:


然後點選Runners的Expand


gitlab有提供很多種runner,這裡我們是看針對單一專案的specific runner

紅色框框就是該專案的token所顯示的位置


如果剛剛的runner有註冊成功

這個Runner的頁面就會出現剛剛註冊的Runner的資訊


可以看到這邊的runner有一組序號,前面有一個驚嘆號!!

有驚嘆號就是runner連線有問題

由於剛剛runner註冊完,並沒有啟動

但在啟動前需要先修改runner的config

剛剛註冊完runner後,剛剛的安裝目錄會出現一個config檔


建議編輯此config檔用Notepad++之類的編輯軟體

加入一段:shell = 'powershell'


提醒:不建議用記事本編輯

會因為換行符號造成config格式錯誤,讓runner無法執行

改好後就能執行runner了

指令為:gitlab-runner-windows-amd64.exe run


如果要把runner轉換成service運作,就下:

gitlab-runner-windows-amd64.exe install

測試階段可先採用run即可!


此時在gitlab頁面的runner上就可以看到剛剛的runner顯示綠燈


這時候總算把runner裝好並設定好了...


回到gitlab專案頁面,點選Set up CI/CD


接著gitlab會在專案新增一個.gitlab-ci.yml的檔案


可先用這樣的語法進行測試

按下Commit changes

記得tags: 裡面要剛剛runner註冊時設定的tag

這樣該runner才會執行


如果你在Commit完之後的視窗出現這樣的訊息

(這裡錯誤範例是在yy-tag前面應該要加上一個"-"符號)

表示你的yml的格式有錯

點選那個紅色叉叉,會到本次CI/CD Commit的紀錄頁面

如果格式有出錯,就會出現粉紅色區塊的提示訊息

點選 CI Lint 即可進行yml的格式偵錯


透過該頁面就可進行yml格式偵測

點選Validate就能協助確認yml的格式是否正確

底下還會有錯誤的提示訊息!


而每次進行.gitlab-ci.yml的編輯

都會在CI/CD這個頁簽紀錄每次的動作

CI/CD的頁簽會記錄每次commit .gitlab-ci.yml的動作

執行狀態、Pipeline單號、Commit單號等等

從這邊點選Status,也會到剛剛CI/CD Commit的紀錄頁面


成功的話,狀態就會呈現passed

可點選底下Job的名稱,這邊是範例是Build

可呈現runner回傳的執行狀態


像這樣就是runner順利執行了yml的script

並執行成功!


若要開始進行專案建置的話

需要在runner的主機上安裝一些套件

就接續看下一篇吧!

沒有留言:

張貼留言