項(xiàng)目使用gitlab進(jìn)行代碼合版,團(tuán)隊(duì)不同的人代碼風(fēng)格不一樣,不方便后續(xù)的維護(hù)以及 code review,所以通過自定義代碼檢查腳本,植入CI流程中,每次mr都先執(zhí)行腳本檢查,如果代碼有問題就pipeline報(bào)錯(cuò)。
CI&CD
Gitlab-runner配置
按照gitlab官網(wǎng)文檔下載并安裝
intel
sudo curl --output /usr/local/bin/gitlab-runner "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-darwin-amd64"
Apple Silicon
sudo curl --output /usr/local/bin/gitlab-runner "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/binaries/gitlab-runner-darwin-arm64"
gitlab-runner install
gitlab-runner start之后/Library/LaunchAgents目錄下就會(huì)出現(xiàn)gitlab-runner.plist項(xiàng)了,執(zhí)行g(shù)itlab-runner status之后就是service is running狀態(tài)。
gitlab-runner register
gitlab-runner安裝啟動(dòng)完成之后,就可以進(jìn)行注冊(cè)了。終端執(zhí)行g(shù)itlab-runner register之后,按照提示輸入相關(guān)配置項(xiàng),就可以展示在網(wǎng)頁的gitlab倉庫中了。如下圖所示


把對(duì)應(yīng)的url、token輸入進(jìn)去,其中要注意tags不能亂填,在 GitLab 中,為了使作業(yè)能夠找到特定的 Runner,你需要在 Runner 配置時(shí)為其指定標(biāo)簽。這意味著要確保 Runner 配置中的標(biāo)簽與作業(yè)中的標(biāo)簽匹配。在 .gitlab-ci.yml 文件中,你可以在作業(yè)配置中使用 tags 字段來指定需要使用的 Runner 標(biāo)簽。

根據(jù)配置文件gitlab-ci.yml文件中tags選項(xiàng)來指定使用哪個(gè)runner進(jìn)行工作,所以gitlab上配置的tags需要包含gitlab-ci.yml文件中配置的tag。

gitlab-ci.yml文件
如果一個(gè)項(xiàng)目想接入ci,可在代碼倉庫下面建個(gè) .gitlab-ci.yml 文件,gitlab-ci.yml 文件通過定義自動(dòng)化流程,幫助確保代碼的構(gòu)建、測(cè)試和發(fā)布可以在不同環(huán)境中可靠運(yùn)行。這一文件是實(shí)現(xiàn) GitLab CI/CD 功能的關(guān)鍵,用于構(gòu)建一個(gè)穩(wěn)定和高效的持續(xù)集成和持續(xù)部署系統(tǒng),其文件格式如上圖所示。
-stages:定義各個(gè)任務(wù)的階段(如 check、build、test、deploy 等),規(guī)定任務(wù)的執(zhí)行順序。
-任務(wù)(job):每個(gè)任務(wù)定義在不同的階段中,包含運(yùn)行階段(check)、運(yùn)行的腳本(script)、tags、依賴的文件、觸發(fā)條件(only)等
-only和except:指定任務(wù)的執(zhí)行條件,比如特定的分支、標(biāo)簽上運(yùn)行
LaunchAgents
gitlab-runner.plist 文件是 macOS 的 LaunchAgent 配置文件,用來定義 gitlab-runner 進(jìn)程的啟動(dòng)參數(shù)。以下是常見的參數(shù)及其含義。
常用參數(shù)解釋
Label
Label 是此服務(wù)的唯一標(biāo)識(shí)符,通常是應(yīng)用的名稱或包名,用來標(biāo)識(shí)該服務(wù)。系統(tǒng)會(huì)根據(jù) Label 來管理、加載或卸載此服務(wù)。建議保持唯一性。
<key>Label</key>
<string>gitlab-runner</string>
ProgramArguments
ProgramArguments 用于指定要運(yùn)行的命令及其參數(shù)。它是一個(gè)數(shù)組,第一個(gè)元素是可執(zhí)行文件的路徑,后續(xù)元素是傳遞給該命令的參數(shù)。此項(xiàng)定義了啟動(dòng)服務(wù)時(shí)實(shí)際運(yùn)行的內(nèi)容。
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/gitlab-runner</string>
<string>run</string>
<string>--working-directory</string>
<string>/Users/your_user/gitlab-runner</string>
</array>
RunAtLoad
RunAtLoad 是一個(gè)布爾值,指示是否在登錄時(shí)自動(dòng)啟動(dòng)此服務(wù)。設(shè)置為 true 表示系統(tǒng)啟動(dòng)或用戶登錄后立即運(yùn)行該服務(wù)。
<key>RunAtLoad</key>
<true/>
KeepAlive
KeepAlive 也是一個(gè)布爾值,指示是否在進(jìn)程意外退出后自動(dòng)重啟。如果設(shè)置為 true,該服務(wù)會(huì)在退出時(shí)自動(dòng)重新啟動(dòng)。
<key>KeepAlive</key>
<true/>
WorkingDirectory
WorkingDirectory 指定服務(wù)啟動(dòng)時(shí)的工作目錄。在該目錄下,服務(wù)會(huì)執(zhí)行其命令。如果命令需要相對(duì)路徑的文件或其他資源,該目錄將作為參考。
<key>WorkingDirectory</key>
<string>/Users/your_user/gitlab-runner</string>
StandardOutPath 和 StandardErrorPath
StandardOutPath 和 StandardErrorPath 用于指定標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出的日志文件路徑。可以幫助記錄服務(wù)的運(yùn)行日志和錯(cuò)誤信息,便于調(diào)試和監(jiān)控。
<key>StandardOutPath</key>
<string>/Users/your_user/gitlab-runner/logs/stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/your_user/gitlab-runner/logs/stderr.log</string>
EnvironmentVariables
EnvironmentVariables 是一個(gè)字典,用于設(shè)置服務(wù)啟動(dòng)時(shí)的環(huán)境變量??梢栽诖颂幎x環(huán)境變量,以確保服務(wù)能夠訪問其所需的環(huán)境配置。
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin</string>
</dict>
加載服務(wù)
launchctl load ~/Library/LaunchAgents/gitlab-runner.plist
卸載服務(wù)
launchctl unload ~/Library/LaunchAgents/gitlab-runner.plist