# GitLab CI/CD 筆記 ###### tags: `gitlab`, `cicd`, `devops` ## 參考文件 - GitLab CI/CD 官方文件 https://docs.gitlab.com/ee/ci/README.html - GitLab CI 設定檔格式 官方文件 https://docs.gitlab.com/ee/ci/yaml/README.html 要先建立 runner 才能執行 pipeline ## 建立 runner WIP ## 建立 pipeline 在專案根目錄下新增檔案 `.gitlab-ci.yml` 以下範例為 React.js 專案範例 ```yaml= # 指定執行環境,可從 docker hub 搜尋所需 image image: node:12 # (非必填) 設定各 job 欲保留檔案快取(全域設定) # &global_cache: 替此區塊命名為 `global_cache`,可在其他區塊做引入繼承使用 cache: &global_cache # 快取比對用職 key,如果 key 有異動則重新上傳 # 可以使用純字串、GitLab CI 內建變數或者檔案(如下方) key: files: - package-lock.json # 欲快取之檔案 paths: - .npm - node_modules # 快取策略,`pull` 即上傳;`push` 即下載,預設為 `pull-push` (下載快取後執行 job 完畢再上傳新的快取) policy: pull # (非必填) 指定要執行的階段 (每個 job 可以定義 `stage`) # 可用值: `build`, `test`, `deploy` # 預設行為是 `build` => `test` => `deploy` 每個階段執行完畢且成功才會進行到下階段 stages: - build - test # 只要不是 GitLab 所指定 keyword,皆認定為自定義 job # 自定義 job, 名為 `run-install` run-install: stage: build # 欲執行指令,輸入 bash 指令 script: - npm ci --cache .npm --prefer-offline cache: # 繼承 `global_cache` <<: *global_cache # 覆蓋全域快取設定,策略修改為 `push` policy: push # 自定義 job, 名為 `run-all-test` run-all-test: stage: test script: - npm test -- --ci --reporters=default --reporters=jest-junit --coverage --watchAll=false # 設定 code coverage parse regex coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/ # 存留檔案,預設為無期限(與快取不同於此檔案可永久存留,快取只存留於每次 pipeline) artifacts: # 設定何時存留檔案,`always` 不論 job 結果如何皆保留;`on_success` job 執行成功才保留;`on_failure` job 執行失敗才保留 when: always # 報告類型設定,單元測試等等,詳見 GitLab 官網 reports: junit: - junit.xml ``` GitLab 有提供線上編輯器供即時修改或檢查格式 (修改等同推一個 commit) 選單位置   辨識 jobs 結果  lint 無誤畫面  lint 有誤畫面  設定完成後,預設會在 default branch 以及 MR (merge request) 執行 pipeline, 可另外設定 MR 要限制 pipeline 執行成功時才能合併
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up