1. 程式人生 > 其它 >.gitlab-ci.yml檔案解讀

.gitlab-ci.yml檔案解讀

之前一直對gitlab-ci.yml 瞭解不夠。完全看不明白,現在對檔案中的內容做個解讀。也當作一個筆記。

基礎知識

1. yml 語法說明

這裡詳細的可以搜尋下阮一峰老師的文章。這裡只列出gitlab-ci.yml中出現的內容

& 錨點和 * 別名,可以用來引用:

defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

相當於:

defaults:
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  adapter:  postgres
  host:     localhost

test:
  database: myapp_test
  adapter:  postgres
  host:     localhost

& 用來建立錨點(defaults),<< 表示合併到當前資料,* 用來引用錨點。

其他語法自行查詢

2. GitLab Runner

GitLab Runner(為了敘述方便,以下簡稱Runner) 是與GitLab的CI/CD執行環境,是GitLab的一個工具包。
簡單來說吧, Runner就是自動化部署任務的執行環境。你編寫的一條自動化部署的流水線,包含了安裝,測試,部署三個任務,這三個任務在哪個環境下執行那,就是在Runner中。沒有Runner,GitLab CI/CD就沒辦法遠行。

要想做GitLab CI/CD,首先要有一個正常的Runner

現有環境和流程展示

GitLab Runner

Pipeline

上圖可以看到流水線有三個階段(stage):build/push/deploy

每個階段有一個job

,gitlab-ci.yml 檔案

這裡只保留一個階段做解讀


## 自定義了一個階段
stages:
  - build

## build 階段
dev-build:
  # 當前階段 和上面定義的對應
  stage: build
  # 任務要執行的shell指令碼內容,內容會被runner執行
  script:
    - gradle clean
    - gradle --build-cache assemble
    - cd build/libs
  # 將流水線過程中的一些檔案,資料夾,打包壓縮,提供一個外鏈供人下載,另外還能在後續的job中快取。
  # paths 是用來指定將那些檔案,目錄放入製品中,也可以使用exclude關鍵詞,將那些目錄,檔案排除,支援正則表示式。
  # expire_in 過期時間預設30天 這裡是1小時
  artifacts:
    paths:
      - build/libs
    expire_in: 1h
  only:
	# 只有dev開始的tag才會執行
    variables:
      - $CI_COMMIT_TAG =~ /dev-/
  tags:
    # runner 的標籤,可以檢視上面的圖片,這裡指定用哪個runner
    - test

關於關鍵字的作用,可自行搜尋。知道常用的即可。