[GitLab] #3 專案新增 GitLab-ci.yml並且實現CI

閱讀時間約 3 分鐘

本篇使用最簡單的GitLab-ci.yml內容,進而實現了CI的功能,操作方式如下。

raw-image


  1. 在專案內新增 測試用的 gitlab-ci.yml
raw-image

2. gitlab-ci.yml的測試內容為下

stages:
- Verify
- Package
- Release

Verify:CodeQuality:
stage: Verify
script:
- echo 'Verify Do Code Quality Job'

Verify:PerformanceTesting:
stage: Verify
script:
- echo 'Verify Do Performance Testing Job'

Verify:UnitTests:
stage: Verify
script:
- echo 'Verify Do Unit Tests Job'

Verify:ContainerRegistry:
stage: Package
script:
- echo 'Verify Do Build Docker Image Job'

Verify:NPMRegistry:
stage: Package
script:
- echo 'Verify Do Build NPM Package Job'

Verify:AutoDeploy:
stage: Release
script:
- echo 'Verify Do Auto Deploy Job'


3. 在push之後可以先到Gitlab 內檢查自已寫好的CI 是否正常,可以點擊下圖右上角的 CI lint

raw-image

5. 按下validate,就會在畫面下方看到測試結果

raw-image

6. 回到剛才 Pipelines其實有pending 的事件,按下pending看看發生了什麼事

raw-image

7. 進到pending 畫面,再按下暫停的黃色按鈕,就會進到另一個畫面

raw-image

8. 我們可以看到pending是因為找不到runner而無法執行

raw-image

9. 進到 Gitlab > Settings > CI/CD > Runners settings 按下EXPAND,往下滑,就會看到自已上一篇建立好的runner

raw-image

10. 點輸RUNNER 鎖頭旁的修改按鈕,進入RUNNER設定頁面,將Run untagged jobs Indicates whether this runner can pick jobs without tags 打勾後SAVE

這裡的用意在於,讓閒置的RUNNER可以自動去接工作,不用透過YAML檔指定

raw-image

11. 按下save之後,回到CICD>Pipline的畫面就會看到 pending已經變成running中

raw-image

12. 但過了一下子結果還是變成fail,是因為runner找不到可以clone的位置,必須要再設定一個可以取得正確位置的runner

raw-image
raw-image
raw-image

13. 可以參考上一篇重新產生一個runner,並且重新執行之後就會成功了

raw-image


小結:

本篇文章實作了一段測試的CI,並且呈現了CI所會產生的問題,希望能夠幫助到一樣也是遇到問題的工程師。





avatar-img
4會員
12內容數
所有文章都是將自已工作上的經驗,透過篇章的方式,希望能夠將技術白話文,讓想入門的工程師能夠清楚的理解, 出版的頻率會是幾個月一篇,也有可能是一星期好幾篇,就看當下是否有空閒產出。某些特定文章會希望以付費方式呈現,如果有什麼問題,歡迎大家隨時留言
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
今天學習Git Command-Line Syntax [1] 。 Git command的 convention 為: `git [switches] <command> [<args>]` 而每一個部分的基本解釋是: - `git` 是 Git 命令的開頭 - `[s
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
CI 持續整合 CI目的是建立自動化專案打包。 CD 持續發表 將打包完成的專案,自動發布。
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
Semgrep 是一個功能強大的 SAST 工具,可以幫助開發人員早期發現程式碼中的安全問題,本文介紹如何將 Semgrep 整合到 GitLab Pipeline 以進行 SAST 掃描。
Thumbnail
在Kubernetes cluster上建立Jenkins,並且使用動態方式建立Jenkins Agent。透過K8S解決傳統的Jenkins一對多架構的問題,最終建立基本Pipeline在Jenkins Web UI上,簡單驗證Jenkins engine正常運行。
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
今天學習Git Command-Line Syntax [1] 。 Git command的 convention 為: `git [switches] <command> [<args>]` 而每一個部分的基本解釋是: - `git` 是 Git 命令的開頭 - `[s
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
CI 持續整合 CI目的是建立自動化專案打包。 CD 持續發表 將打包完成的專案,自動發布。
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
Semgrep 是一個功能強大的 SAST 工具,可以幫助開發人員早期發現程式碼中的安全問題,本文介紹如何將 Semgrep 整合到 GitLab Pipeline 以進行 SAST 掃描。
Thumbnail
在Kubernetes cluster上建立Jenkins,並且使用動態方式建立Jenkins Agent。透過K8S解決傳統的Jenkins一對多架構的問題,最終建立基本Pipeline在Jenkins Web UI上,簡單驗證Jenkins engine正常運行。