天天看點

gitlab-ci.yml 檔案

轉自: https://www.cnblogs.com/szk5043/articles/9854712.html

以備個人檢視,浏覽請看原文!

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失敗後的自動重試次數

備注:

artifacts

dependencies

 和

cache

這兩種方法可以實作job之間資料的同步

job:
  tags: 
    - test-tag ##注意這個是選擇指定的runner
  services:
  - php:7
  - node:latest
  - golang:1.10
  image: alpine:3.7
  script:
  - echo '========== hello gitlab-runner'
           

2、gitlab-ci配置示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

# 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、生産環境配置示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

# 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環境
           
gitlab-ci.yml 檔案

#master分支僅能釋出staging和prod環境

gitlab-ci.yml 檔案

繼續閱讀