🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > [官方 doc](https://docs.gitlab.com/ee/ci/yaml/README.html) ## 配置模版 <details> <summary>.gitlab-ci.yml</summary> ``` stages: - install_deps - test - build - deploy_test - deploy_production cache: key: ${CI_BUILD_REF_NAME} paths: - node_modules/ - dist/ # 安装依赖 install_deps: stage: install_deps only: - develop - master script: - npm install # 运行测试用例 test: stage: test only: - develop - master script: - npm run test # 编译 build: stage: build only: - develop - master script: - npm run clean - npm run build:client - npm run build:server # 部署测试服务器 deploy_test: stage: deploy_test only: - develop script: - pm2 delete app || true - pm2 start app.js --name app # 部署生产服务器 deploy_production: stage: deploy_production only: - master script: - bash scripts/deploy/deploy.sh ``` </details> <br/> * stages:定义构建阶段,这里只有一个阶段 deploy * deploy:构建阶段 deploy 的详细配置也就是任务配置 * script:需要执行的 shell 脚本 * only:这里的 master 指在提交到 master 时执行 * tags:与注册 runner 时的 tag 匹配 ## 字段说明 ## 关键字 |关键字| 是否必须 |描述| |---|---|---| |image| no| 使用的docker镜像。详见| |services |no| 使用的docker服务。详见| |stages |no| 定义构建场景| |types |no| stages的别名(不赞成使用)| |before_script |no| 定义每个任务的脚本启动前所需执行的命令| |after_script |no| 定义每个任务的脚本执行结束后所需执行的命令| |variables |no| 定义构建变量| |cache |no| 定义哪些文件需要缓存,让后续执行可用| Job 关键词 |关键字| 是否必须 |描述| |---|---|---| |script |yes| Runner执行的命令或脚本。可以包含多条命令| |image |no| 使用的docker镜像。[详见](https://links.jianshu.com/go?to=https%3A%2F%2Fdocs.gitlab.com%2Fce%2Fci%2Fdocker%2FREADME.html)| |services |no| 使用的docker服务。[详见](https://links.jianshu.com/go?to=https%3A%2F%2Fdocs.gitlab.com%2Fce%2Fci%2Fdocker%2FREADME.html)| |stage |no| 定义job stage(默认:test)| |type |no| stage的别名(已弃用)| |variables |no| 定义job级别的变量| |only |no| 定义一列git分支,并为其创建job| |except |no| 定义一列git分支,不创建job| |tags |no| 定义一列tags,用来指定选择哪个Runner(同时Runner也要设置tags)| |allow_failure |no| 允许job失败。失败的job不影响commit状态| |when |no| 定义何时开始job。可以是on_success,on_failure,always或者manual| |dependencies |no| 定义job依赖关系,这样他们就可以互相传递artifacts| |cache |no| 定义应在后续运行之间缓存的文件列表| |before_script |no| 重写一组在作业前执行的命令| |after_script |no| 重写一组在作业后执行的命令| |environment |no| 定义此作业完成部署的环境名称| |coverage |no| 定义给定作业的代码覆盖率设置| **only**and**except**保留字 |关键字| 描述| |---|---|---| |branches| 当一个分支被push上来| |tags| 当一个打了tag的分支被push上来| |api| 当一个pipline被piplines api所触发调起,详见piplines api| |external| 当使用了GitLab以外的CI服务| |pipelines| 针对多项目触发器而言,当使用CI_JOB_TOKEN并使用gitlab所提供的api创建多个pipelines的时候| |pushes| 当pipeline被用户的git push操作所触发的时候| |schedules| 针对预定好的pipline而言(每日构建一类)| |triggers| 用token创建piplines的时候| |web| 在GitLab页面上Pipelines标签页下,你按了run pipline的时候|