.gitlab-ci.yml 配置文件详解

2024-01-18 21:28:00 浏览数 (2)

git工具文档说明:https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html

1.gitlab-ci.yml文件是什么

  • GitLab提交持续集成服务,当你在项目根目录中添加 .gitlab-ci.yml 文件,并配置项目的运行器( GitLab Runner ),那么后续的每次提交都会触发CI流水线( pipeline )的执行。
  • .gitlab-ci.yml 文件告诉运行器需要做哪些事情,默认情况下,流水线有 build 、test 、deploy 三个阶段,即 构建 、测试 、部署 ,未被使用的阶段将会被自动忽略。
  • 如果一切运行正常(没有非零返回值),您将获得与提交相关联的漂亮绿色复选标记。这样可以在查看代码之前轻松查看提交是否导致任何测试失败。
  • 大多数项目使用GitLab的CI服务来运行测试套件,以便开发人员在破坏某些内容时可以立即获得反馈。使用持续交付和持续部署将测试代码自动部署到模拟环境和生产环境的趋势越来越明显。
  • 由于将 .gitlab-ci.yml 文件存放在仓库中进行版本控制,使用单一的配置文件来控制流水线,具有读访问权限的每个人都可以查看内容,从而使其更有吸引力地改进和查看构建脚本。旧的版本也能构建成功,forks项目也容易使用CI,分支可以有不同的流水线和作业。
  • 软件开发的持续方法基于自动执行脚本,以最大程度地减少在开发应用程序时引入错误的机会。从开发新代码到部署新代码,他们几乎不需要人工干预,甚至根本不需要干预。
  • 它涉及到在每次小的迭代中就不断地构建、测试和部署代码更改,从而减少了基于已经存在bug或失败的先前版本开发新代码的机会。
一个.gitlab-ci.yml文件可能包含:
代码语言:javascript复制
stages:
  - develop
  - test
  - master
  - demo
  - demorun

prd_develop:
  stage: develop
  tags:
    - frontdevelop
  only:
    - develop
  script:
    - rm -rf /data/build/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME/src
    - rm -rf /data/build/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME/static
    - cp -rf ./. /data/build/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME/
    - cd /data/build/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME
    # - npm install
    - npm run develop
    - ls -a

prd_test:
  stage: test
  tags:
    - fronttest
  only:
    - test
  script:
    - rm -rf /data/build/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME/src
    - rm -rf /data/build/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME/static
    - cp -rf ./. /data/build/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME/
    - cd /data/build/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME
    # - npm install
    - npm run preview
    - ls -a

2. 配置参数详解

关键字

描述

script

必须参数,运行器需要执行的脚本

image

使用Docker image镜像

services

使用Docker services镜像

before_script

作业执行前需要执行的命令

after_script

作业执行后需要执行的命令

stages

定义流水线所有的阶段

stage

定义作业所处流水线的阶段(默认test阶段)

only

限制作业在什么时候创建

except

限制作业在什么时候不创建

tags

作用使用的Runner运行器的标签列表

allow_failure

允许作业失败,失败的作业不影响提交的状态

when

什么时候运行作业

environment

作用部署的环境名称

cache

指定需要在job之间缓存的文件或目录

artifacts

归档文件列表,指定成功后应附加到job的文件和目录的列表

dependencies

当前作业依赖的其他作业,你可以使用依赖作业的归档文件

coverage

作业的代码覆盖率

retry

作业失败时,可以自动执行多少次

parallel

指定并行运行的作业实例

trigger

定义下游流水线的触发器

include

作业加载其他YAML文件

extends

控制实体从哪里继承

pages

上传GitLab Pages的结果

retry

作业失败时,可以自动执行多少次

variables

定义环境变量

0 人点赞