目錄
- 一、涉及概念
- 二、Pipeline流程觸發
- 三、配置說明
- 四、共享Runner
一、涉及概念
名稱 | 簡述 |
---|---|
Pipeline | 流水線,用于組織構建CI/CD流程,實現了Pipeline As Code |
Stage | 一條流水線是由多個階段組成的,每個階段一個stage,階段按順序執行 |
Job | 每個階段由多個Job組成,同個Stage下的多個Job可并行執行 |
CI/CD variables | CI/CD過程中的環境變量 |
GitLab Runner | 流水線任務執行者,執行定義好的腳步 |
二、Pipeline流程觸發
觸發角色 | 觸發動作 | 目標分支 | Stage |
---|---|---|---|
項目負責人/開發人員 | merge | develop | 構建、測試、部署開發環境 |
項目負責人/開發人員 | merge, commit | test, release/* | 構建、測試、打包、部署測試環境 |
項目負責人 | tag | master | 構建、測試、打包、預發布 |
三、配置說明
GitLab Pipeline是通過解析倉庫根目錄下的.gitlab-ci.yml文件來執行流水線任務,常用配置示例如下:
# 緩存定義[可選],用于不同Runner實例間傳遞構建產物 cache: # 關鍵字,可隔離不同job或stage之間 key: "$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHA" # 需要緩存的路徑/文件 paths: - file - dir/* # stage定義<必填> stages: - build - test - package - release # ... # 定義Job<必填>,名稱可自定義且不能重復 build-dev: # Runner鏡像[可選],指定時會覆蓋默認鏡像 # image: centos:7 # 指定Runner<必填> tags: - golang-amd64 # 關聯的stage<必填> stage: build # 關聯的觸發分支[可選] only: - develop # 任務腳本【必填】 script: - sh script/build_dev.sh # test階段 test: # ... stage: test # ...
詳見:docs.gitlab.com/ee/ci/yaml/
四、共享Runner
公共Runner對于所有項目是可見的,可通過tag來指定特地功能的Runner
tag | 默認鏡像 | 包含功能 | 描述 |
---|---|---|---|
maven | repo.netfuse.cn/cicd/maven:jdk-8 | maven3, jdk8, ssh | 構建Java |
node | repo.netfuse.cn/cicd/node:14.2 | node, yarn, ssh | 構建前端 |
golang-amd64 | repo.netfuse.cn/cicd/golang:1.15-amd64repo.netfuse.cn/cicd/golang:1.16-amd64(可選) | go, git, ssh | 構建Go,AMD64架構 |
golang-aarch64 | repo.netfuse.cn/cicd/golang:1.15-aarch64 | go, git, ssh | 構建Go,ARM64架構 |
kaniko | repo.netfuse.cn/cicd/kaniko:v1.6.0 | kaniko | 構建鏡像 |
ubuntu-amd64 | repo.netfuse.cn/cicd/ubuntu:18.04 | dpkg, ssh | deb打包,AMD64架構 |
ubuntu-aarch64 | repo.netfuse.cn/cicd/ubuntu:bionic-arm64 | dpkg, ssh | deb打包,ARM64架構 |
deployercentos-amd64 | repo.netfuse.cn/cicd/centos:7 | rpm-build, make, ssh, argocd, kubectl | rpm打包,AMD64架構 |
releaser | repo.netfuse.cn/cicd/ubuntu:18.04 | dpkg, ssh | 發布、推文件、部署等 |
以上就是GitLab Pipeline規范及流程觸發詳解的詳細內容,更多關于GitLab Pipeline規范的資料請關注其它相關文章!