上傳到 GitLab 的程式有辦法自行進行測試嗎? 可以透過 CI/CD 的功能. 我們須編輯 .gitlab-ci.yml 檔案來指定整個流程
下面的範例使用 Windows 當作 Runner , 須先建立好 Gitlab Runner – Windows shell ( PowerShell) – https://benjr.tw/106161
將我們的專案 .gitlab-ci.yml 設定如下( 範例是 參考文章 https://editor.leonh.space/2022/gitlab-ci/ ).
stages: - build - test - deploy default: tags: - windows before_script: - Set-Variable -Name "time" -Value (date -Format "%H:%m") - echo ${time} - echo "started by ${GITLAB_USER_NAME}" build-job: stage: build script: - echo "running scripts in the build job" test-job1: stage: test script: - echo "running scripts in the test job 1" test-job2: stage: test script: - echo "running scripts in the test job 2" deploy-job: stage: deploy script: - echo "running scripts in the deploy job"
整個架構流程為
Pipeline -> Stage -> Job
- Pipeline
整個 Pipeline 是由 不同的 Stage ( 上面範例為 : build , test , deploy) 所組成 ( 當前面 Stage 失敗之後,後面的 Stage 就會暫停 ). - Stage
不同的 Stage 包含不同的 Job (如: test stage 就包含 test-job1 與 test-job2 ),同一個 Stage 所執行的時間點是依序的 ( 在 build stage 結束後會依序執行 test stage 的 test-job1 與 test-job2 ) - Job
每個 script 所定義的實際工作內容 ,可以定義多個 script 來依序執行 , 也可以使用 before_script 或是 after_script 在執行這些 script 的前後來執行.
來看一下 .gitlab-ci.yml 設定檔案寫了什麼, 詳細參數使用方式請參考 – https://docs.gitlab.com/ee/ci/yaml/#keywords
Stage 指定我們要依序執行那些 pipeline (流水線),這邊定義了 build , test , deploy 3個流水線.
stages: - build - test - deploy
每個 Job 共用的工作可以定義在 預設 default 區塊.
default: tags: - windows before_script: - Set-Variable -Name "time" -Value (date -Format "%H:%m") - echo ${time} - echo "started by ${GITLAB_USER_NAME}"
可用以下關鍵字作定義:
- after_script
每個 Job 執行後須做的動作. - artifacts
- before_script
每個 Job 執行前須做的動作. - cache
- hooks
- id_tokens
- image
- interruptible
- retry
- services
- tags
指定要執行哪一個 runner . - timeout
接下來就是定義 不同的 Stage 與其執行的 Job 內容.
build-job: stage: build script: - echo "running scripts in the build job"
test-job1: stage: test script: - echo "running scripts in the test job 1" test-job2: stage: test script: - echo "running scripts in the test job 2"
deploy-job: stage: deploy script: - echo "running scripts in the deploy job"
預設只要 Project 內的程式有更新就會建立 pipeline 來進行測試,如果需要指定狀況才執行 pipeline 可以透過定義 workflow 來避免太頻繁的 pipelines 工作,詳細請參考.
- Job Rules – https://benjr.tw/106258
- Workflow Rules – https://benjr.tw/106251
沒有解決問題,試試搜尋本站其他內容