.gitlab-ci.yml说明

网友投稿 261 2022-10-25

.gitlab-ci.yml说明

Gitlab官方文档:CI通过YAML文件管理配置job,该文件存放于仓库的根目录, 默认名为.gitlab-ci.yml,定义了job应该如何工作。

pipeline:

一个pipeline就是一次完整的构建任务,里面可以包含多个阶段(stages)。

stage:

stages表示任务构建的阶段。一次pipeline中允许定义多个stages,这些stages 会有以下特点:

1. 所有 stages 会按照顺序运行,即当一个 stage 完成后,下一个 stage 才会开始 2. 只有当所有 stages 完成后,该构建任务 (pipeline) 才会成功 3. 如果任何一个 stage 失败,那么后面的 stages 不会执行,该构建任务 (pipeline) 失败

job:

jobs表示构建工作,表示某个stage里面执行的工作。 我们可以在stages里面定义多个jobs,这些jobs会有以下特点:

1. 相同stage中的jobs会并行执行 2. 相同stage中的jobs都执行成功时,该stage才会成功 3. 如果任何一个job失败,那么该stage失败,即该构建任务 (pipeline) 失败

jobs的定义:

1. 定义了在什么条件下执行它们的条件 2. 具有任意名称的顶级元素,并且必须至少包含script 3. 不受定义数量的限制

示例:

job1:   script: "execute-script-for-job1"job2:   script: "execute-script-for-job2"

上面包含两个单独的job,其中每个job执行不同的命令。

每个job都是独立运行的,可以直接执行命令./configure; make; make install或运行脚本sh test.sh。jobs由runners获取并在runners各自的环境中执行。

每个job必须有一个唯一的名称,但有几个保留的关键字不能用作job名称:

image services stages types before_script after_script variables cache

配置参数列表:

一个job被定义为一列参数,这些参数指定了job的行为。下表列出了可用的job参数:

是否必须描述
scriptyes由Runner执行的shell脚本或命令
imageno使用的docker镜像
servicesno使用的docker服务镜像
before_scriptno在作业之前执行的脚本或命令
after_scriptno在作业之后执行的脚本或命令
stagesno一个pipeline的各个阶段
stageno一个job阶段,默认是test
onlyno限制job什么时候执行
exceptno限制job什么时候不执行
rulesno指定条件列表去确定一个job的可选属性以及是否执行该job。不可与only/except一起使用
tagsno指定job适用的runner,tags为runner标签
allow_failureno允许job失败,如果失败将不会改变提交状态
whenno指定job什么时候执行,可以是on_successon_failurealwaysmanual
environmentno指定job部署的环境名称
cacheno在后续运行之间应该缓存的文件列表
artifactsno要附加到一个job上的文件和目录列表
dependenciesno通过提供要从中获取artifacts的job列表来限制将哪些artifacts传递给特定的job
coverageno设置一个给定job的代码覆盖率
retrynojob失败后的自动重试次数
timeoutno设置优先于项目范围的job超时时间
parallelno一个job并行运行的实例数量
triggerno定义下游pipeline的触发器
includeno允许该job包含外部YAML文件
extendsno一个job将继承的配置项
pagesno上传job的结果与GitLab Pages一起使用
variablesno在job级别上定义变量
interruptibleno定义一个job在因为新的运行而变得多余时是否可以取消

设置默认参数:

可以使用default关键字将某些参数全局设置为所有job的默认值,特定于job的配置可以覆盖默认参数。

下面的job参数可以被设置为默认值:

image services before_script after_script cache

示例:

default:                #指定默认参数   image: ruby:2.5rspec:              #指定特定参数   script: bundle exec rspec rspec 2.6:   image: ruby:2.6   script: bundle exec rspec

.gitlab-ci.yml示例:

stages:   - pull_code_test  - pull_code_production  - install_deps  - test  - build  - deploy_test  - deploy_production   variables:   PHP_FPM_CONTAINER: lnmp-php-fpm  WORK_DIR: /usr/share/nginx/html/  PROJECT: laravel-demo  GIT_DIR: /mnt/lnmp-docker   # 拉取代码pull_code_test:   stage: pull_code_test  only:     - develop  script:      - cd ${GIT_DIR}/${PROJECT}      - git pull origin develop      pull_code_production:   stage: pull_code_production  only:     - master  script:     - cd ${GIT_DIR}/${PROJECT}     - git pull origin master     # 安装依赖install_deps:   stage: install_deps  script:     - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} composer install     build:   stage: build  script:     # Run migrations     - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} php artisan migrate    # Cache clearing     - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} php artisan cache:clear    # Create a cache file for faster configuration loading     - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} php artisan config:cache    # Create a route cache file for faster route registration     - docker exec -w ${WORK_DIR}/${PROJECT} ${PHP_FPM_CONTAINER} php artisan route:clear     deploy_test:   stage: deploy_test  script:     - cd ${GIT_DIR}     - docker-compose down && docker-compose build && docker-compose up -d     deploy_production:   stage: deploy_production  script:     - cd ${GIT_DIR}     - docker-compose restart

更多.gitlab-ci.yml的说明请参考官方文档。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java ynchronized重量级锁的核心原理详解
下一篇:详谈电脑主机上的VGA接口和DVI接口的区别
相关文章

 发表评论

暂时没有评论,来抢沙发吧~