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 | 定义环境变量 |