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 文件_第1张图片

#master分支仅能发布staging和prod环境

gitlab-ci.yml 文件_第2张图片

你可能感兴趣的:(cicd)