Skip to main content

3 posts tagged with "gitlab CI/CD"

View All Tags

· 8 min read
zaxro

what is git submodule

將一個 Git 存儲庫作為另一個存儲庫的子模組進行管理。也就是說可以在一個 git repo 底下,同時管理多個 git repo,可以在主代碼庫中輕鬆地管理和更新子模組. 詳細的介紹可以看- Git - submodule 使用教學

when to use

我在工作上遇到的情況是有一個日常維護的主 repo,其中有一隻管理域名的檔案需要程式定期去 review 看域名跟憑證多久到期.目前方法是透過建立一個 git repo 內含有檢查域名的程式,建立 build image 的 CI,每當程市有改動會把程式打包做成 image.然後在主 repo 那邊則會拉取該 image 去做域名的檢查.過程如下:

  1. 子 repo 更新程式並 CI 建立 image
  2. 使用步驟 1 建立的新 image,於主 repo 透過 CI 定時使用最新的 image 執行程式檢查.

這個方式沒啥問題,只是對於一些新人或初次看到這個架構的人而言,會覺得串這兩層很複雜.

所以後來我在自己另外寫檢查證書到期的程式時,就想辦法去改善這個可讀性的問題,因此發現 git submodule 是一個不錯的處理方式. 過程想法如下

  1. 透過 CI,在檢測程式的 repo,透過 git submodule 抓取主 repo 的域名檔案,並用程式檢查.

· One min read
zaxro

gitlab 權限管理

gitlab 有一堆權限管理東東,詳情,透過適當的設計來安全權限給予.

這邊說一下之前遇到的問題,read_repository and read_registry 差別在哪裡!官方解釋對個別解釋如下:

read_registry-Grants read-only (pull) access to a Container Registry images if a project is private and authorization is required. Available only when the Container Registry is enabled.

read_repository-Grants read-only access to repositories on private projects using Git-over-HTTP or the Repository Files API.

小結:read_registry 主要是讓你只能抓 image 下來,read_repository 則是可以檢查 repo 裡面所有分支,commit 等,並可以 clone repository,但不能 push!

· 10 min read
zaxro

basic tutorial

以下出自官網. 主要介紹幾個大方向.

Concepts

  • Pipelines: CI/CD 透過 pipeline 建立。
  • CI/CD variables: 有 GitLab 預設變數(可以在 script 用 export 取得)、自定義環境變數和secure files
  • Environments: 要把應用部署在不同環境要使用。
  • Job artifacts: 程式過程中執行的產物(例如 xxx.csv)檔案的輸出以及其他 job 使用等。
  • Cache dependencies: 使用 cache 關鍵字可以幫助減少 pipeline 的運行時間,提高 CI/CD 效率。通過緩存依賴項,可以避免在每次運行 pipeline 時都從頭開始安裝相同的依賴項。
  • GitLab Runner: 設定執行這個 pipeline 的計算機。
  • Pipeline efficiency: 在 pipeline 過程中也會遇到一些煩人的問題,例如運行了一分鐘才失敗,需要多次查看等。如何提高效率呢?可以使用緩存、縮減要拉的映像檔大小、使用規則以及 only/except 關鍵字來控制作業在何時和何處運行。
  • Test cases: 在測試平台上建立測試情境。