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环境

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值