ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.gitlab-ci.yml关键词完整解析(一)

2020-12-11 09:59:39  阅读:292  来源: 互联网

标签:npm ci script gitlab 任务 job 流水线 yml tags


.gitlab-ci.yml关键词完整解析(一)

使用GitLab自带的流水线,必须要定义流水线的内容,而定义内容的文件默认叫做.gitlab-ci.yml,使用yml的语法进行编写。
目前任务关键词有28个,全局的关键词有10个,两者重叠的有很多。今天我给大家先讲解一下常用的关键词,掌握了这些关键词的用法,你可以编写逻辑严谨,易于扩展的流水线。

任务的28个关键词分别是,
script, after_script, allow_failure, artifacts, before_script, cache, coverage, dependencies, environment, except, extends, image, include, interruptible, only, pages, parallel, release, resource_group, retry, rules, services, stage, tags, timeout, trigger, variables, when

全局的关键词
image,services,before_script,after_script,tags,cache,artifacts,retry,timeout,interruptible

最常任务中最常用的是这七个scriptartifactsstagewhentagsimagecache
下面我先来详细介绍一下这七个关键词,知道了这个七个关键词,一般的流水线随随便便拿下,

script

任务要执行的shell脚本内容,内容会被runner执行,在这里,你不需要使用git clone ....克隆当前的项目,来进行操作,因为在流水线中,每一个的job的执行都会将项目下载,恢复缓存这些流程,不需要你再使用脚本恢复。你只需要在这里写你的项目安装,编译执行,如
npm install 另外值得一提的是,脚本的工作目录就是当前项目的根目录,所有可以就像在本地开发一样。此外script可以是单行或者多行

单行脚本

job:
  script: npm install

多行脚本

job:
  script:
    - npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
    - npm install --registry=http://registry.npm.taobao.org

***script***是一个job的必填内容,不可或缺。一个job最少有二个属性,一个是job name, 任务名称, 一个就是script。

image

指定一个基础Docker镜像作为基础运行环境,经常用到的镜像有node nginx docker

job:
  image: node:latest
  script: npm install

在上面这个任务中,如果不指定image: node:latest 执行下面的npm install时会报错,找不到npm的命令。
image的作用就是给当前任务或者当前流水线设置一个基础环境,有可能是nodejs,也有可能是java, go, php,
可以设置当前流水线的,也可以设置当前任务的。

artifacts

翻译出来这个单词就是制品,一个成品,作用是将流水线过程中的一些文件,文件夹,打包压缩,提供一个外链供人下载,另外还能在后续的job中缓存。
比如我们构建一个前端项目后将dist目录做成一个压缩包,

build:
  script:
    - npm run build
  artifacts:
    paths:
      - dist/

在这个任务后面运行的任务会自动恢复这个制品,意味着你不用再执行npm run build来获取编译后的dist文件了,
在安卓,ios打包的时候,非常有用,因为流水线最终输出的就是一个可下载,可安装的应用。
paths 是用来指定将那些文件,目录放入制品中,
也可以使用exclude关键词,将那些目录,文件排除,支持正则表达式。
此外还有以下几个属性

  • paths 文件路径
  • exclude 排除的文件
  • name 制品名称
  • expose_as 在UI页面导出的名称
  • untracked 布尔类型,是否将git忽略的文件加到制品中
  • when on_success;on_failure;always 何时上传制品
  • expire_in 过期时间默认30天
  • reports 收集测试报告
build:
  script:
    - npm run build
  artifacts:
    paths:
      - dist/
    exclude:
      - binaries/**/*.o
    expose_as: 'artifact 1'
    name: "$CI_COMMIT_REF_NAME"
    untracked: false
    expire_in: 2 hrs 20 min
    when: on_failure

tags

tags 关键词是用于指定Runner,tags的取值范围是在该项目可见的runner tags中,可以在Setting =>CI/CD => Runner 中查看的到。
要知道,改属性可以设置全局,不设置则默认使用公有Runner去执行流水线。每个任务可以指定一个Runner,可以指定多个标签,但runner却只能一个。以一个为准。tags是在我们注册Runner是配置的,后续也可以更改。

install:
  tags:
    - hello-vue
    - docker
  script:
    - npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
    - npm install --registry=http://registry.npm.taobao.org

cache

缓存是将当前工作环境目录中的一些文件,一些文件夹存储起来,用于在各个任务初始化的时候恢复。避免多个下载同样的包,能够大大优化流水线效率。在前端项目中,我们经常把node_modules缓存起来,这样一条流水线都可以使用这些下载好的包。在java项目中经常把maven下载的包缓存起来。以备后用
cache下的参数有

  • paths 当前工作环境下的目录
  • key 存储的key,key不变不会重新生成缓存,
  • 标签:npm,ci,script,gitlab,任务,job,流水线,yml,tags
    来源: https://blog.csdn.net/github_35631540/article/details/111029151

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有