5:GitLab之gitlab-ci.yml配置文件詳解


1、gitlab-ci.yml參數列表

是否必須 描述
script 必須  定義由Runner執行的shell腳本或命令
extends 非必須  定義此作業將繼承的配置條目
image 非必須  需要使用的docker鏡像,請查閱該文檔
services 非必須  定義所需的docker服務,請查閱該文檔
stage 非必須  定義一個工作場景階段,默認是test
type 非必須  stage的別名,不贊成使用
variables 非必須  在job級別上定義的變量
only 非必須  定義job所引用的git分支
except 非必須  定義job所不適用的git分支
tags 非必須  定義job所適用的runner,tags為runner標簽
allow_failure 非必須  允許任務失敗,但是如果失敗,將不會改變提交狀態
when 非必須  定義了job什么時候執行,可以是on_success、on_failure、always和manual
dependencies 非必須  定義了該job依賴哪一個job,如果設置該項,可以通過artifacts設置
artifacts 非必須  工件,在依賴項之間傳遞的東西,類似cache,但原理與cache不同
cache 非必須 定義需要被緩存的文件、文件夾列表
 before_script 非必須  覆蓋在作業之前執行的腳本或命令
 after_script 非必須  覆蓋在作業之后執行的腳本或命令
 environment 非必須  定義讓job完成部署的環境名稱
 coverage 非必須  定義job設置代碼覆蓋率
 retry 非必須  定義job失敗后的自動重試次數

 

2、gitlab-ci配置示例

# docker鏡像
image: ruby:2.1
# 依賴的docker服務
services:
  - postgres
# 開始執行腳本前所需執行腳本
before_script:
  - bundle install
# 腳本執行完后的鈎子,執行所需腳本
after_script:
  - rm secrets
# 該ci pipeline適合的場景
stages:
  - build
  - test
  - deploy
# 定義的任務1
job1:
  # 場景為構建
  stage: build
  # 所需執行的腳本
  script:
    - execute-script-for-job1
  # 在哪個分支上可用
  only:
    - master
  # 指定哪個ci runner跑該工作
  tags:
    - docker

 

3、生產環境配置示例

# general settings for all
.general: &general
  stage: deploy     #定義構建場景為部署,1.init初始化、2.lint代碼規范、3.unit_test單元測試、4.build構建、5.deploy部署,若其中任務一個步驟出錯,都不會到部署
  only:
    - hotfix/hotfix-conference      #指定分支名為緊急修bug,master主開發分支、feature新功能分支、release發布分支、hotfix緊急修bug分支
  when: manual   #觸發條件為手工執行
  tags:
    - cloud         #指定在哪個ci runner工作,雲
  image: ip:30050/builder/maven:v1-alpine      #青雲maven容器
  script:
    - echo "current branch ****** $CI_COMMIT_REF_NAME ******"
    - echo "deploy start ..."

    - /share/script/deploy.sh $CI_JOB_NAME     #執行腳本,此腳本路徑是被映射至gitlab runner容器內的路徑,參數為CI_JOB_NAME變量
    
    - echo "deploy done."

# general settings for dev 
.dev: &dev        #開發環境
  <<: *general    #繼承general定義的變量,若重新定義將被覆蓋
  tags:
    - local     #本地
  image: ip:30050/builder/maven:v1-alpine   #本地maven容器


# golive deploy setting
.golive: &golive   
  <<: *general  #繼承general定義的變量,若再定義將被覆蓋
  only:
    - master    #指定分支名
  script:
    - echo "current branch ****** $CI_COMMIT_REF_NAME ******"
    - echo "deploy golive start ..."

    - /share/script/golive/deploy.sh $CI_JOB_NAME
    
    - echo "deploy golive done."


#######定義hotfix/hotfix-conference 分支使用dev使用dev job的配置、test使用 general job的配置   
# deploy discovery
discovery - dev: *dev
discovery - test: *general

# deploy services
services - dev: *dev
services - test: *general

######定義僅master分支使用golive job定義的配置
backend - staging - node1: *golive
backend - staging - node2: *golive

backend - prod - node1: *golive   
backend - prod - node2: *golive

 

4、測試

hotfix/hotfix-conference分支僅能發布dev和test環境

#master分支僅能發布staging和prod環境

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM