其他分享
首页 > 其他分享> > .gitlab-ci.yml说明

.gitlab-ci.yml说明

作者:互联网

Gitlab官方文档:https://docs.gitlab.com/ee/ci/yaml/README.html

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参数:

值 是否必须 描述
script yes 由Runner执行的shell脚本或命令
image no 使用的docker镜像
services no 使用的docker服务镜像
before_script no 在作业之前执行的脚本或命令
after_script no 在作业之后执行的脚本或命令
stages no 一个pipeline的各个阶段
stage no 一个job阶段,默认是test
only no 限制job什么时候执行
except no 限制job什么时候不执行
rules no 指定条件列表去确定一个job的可选属性以及是否执行该job。不可与only/except一起使用
tags no 指定job适用的runner,tags为runner标签
allow_failure no 允许job失败,如果失败将不会改变提交状态
when no 指定job什么时候执行,可以是on_success、on_failure、always和manual
environment no 指定job部署的环境名称
cache no 在后续运行之间应该缓存的文件列表
artifacts no 要附加到一个job上的文件和目录列表
dependencies no 通过提供要从中获取artifacts的job列表来限制将哪些artifacts传递给特定的job
coverage no 设置一个给定job的代码覆盖率
retry no job失败后的自动重试次数
timeout no 设置优先于项目范围的job超时时间
parallel no 一个job并行运行的实例数量
trigger no 定义下游pipeline的触发器
include no 允许该job包含外部YAML文件
extends no 一个job将继承的配置项
pages no 上传job的结果与GitLab Pages一起使用
variables no 在job级别上定义变量
interruptible no 定义一个job在因为新的运行而变得多余时是否可以取消
设置默认参数:
可以使用default关键字将某些参数全局设置为所有job的默认值,特定于job的配置可以覆盖默认参数。

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

image
services
before_script
after_script
cache

示例:

default: #指定默认参数
image: ruby:2.5

rspec: #指定特定参数
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的说明请参考官方文档。

原文链接:https://blog.csdn.net/miss1181248983/article/details/102885253

标签:ci,script,gitlab,job,no,docker,stages,yml,stage
来源: https://www.cnblogs.com/mmgithub123/p/16242832.html