GitLab CI/CD:.gitlab-ci.yml 文件 (持续更新)

一、.gitlab-ci.yml 文件作用

  • 可以定义跑CI时想要运行的命令或脚本
  • 可以定义job之间的依赖和缓存
  • 可以执行程序部署并定义部署位置
  • 可以定义想要包含的其他配置文件和模版

二、一个简单的.gitlab-ci.yml 文件示例

三、.gitlab-ci.yml 文件中的一些关键字

after_script

  • 定义在每个job(包括失败的job)之后运行的命令
  • 如果job超时或者取消了,after_script 命令就不再执行

allow_failure

  • 设置allow_failure:true的job,失败时不影响其他job运行,不影响pipeline运行结果,默认值为false
  • allow_failure:exit_codes 可以根据exit_codes判断是否允许job失败,例:

artifacts

  • 默认job运行成功后,附加在job的文件或文件夹
  • 可以在.gitlab-ci.yml 中通过设置 artifacts:when,指定job在什么状态下会上传 artifacts
  • artifacts 文件大小最大支持1G,默认100M,job 结束运行后,可在GitLab job 页面下载对应的 artifacts 文件
  • 默认情况下,最近一个 stages 里的 job 会自动下载上一个 stages 中的 artifacts,可以通过 dependencies / needs 关键字控制
  • paths 关键字可以指定要把哪个文件放在 artifacts 中
  • expire_in 关键字可以指定 artifacts 文件保存时间,默认一个月

dependencies

  • 可以指定从哪个 job 中下载 artifacts,如果不想下载任何 artifacts 文件,可以给 dependencies 定义一个空的数组
  • 如果job A 中,dependencies 指定的 job B 由于某种原因没有成功上传 artifacts 文件,job A 就会运行失败 (因为 job A 需要的文件找不到了)

artifacts:exclude

  • 指定哪些文件不想包含在 artifacts 中

artifacts:expire_in

  • 设置 artifacts 保存时间(默认以秒为单位),默认30天
  • expire_in 可设置的参数示例:
    • '42'
    • 42 seconds
    • 3 mins 4 sec
    • 2 hrs 20 min
    • 2h20min
    • 6 mos 1 day
    • 47 yrs 6 mos and 4d
    • 3 weeks and 2 days
    • never

artifacts:name

  • 定义artifacts文件名,可接受预定义变量,如“$CI_JOB_NAME”

artifacts:paths

  • 指定 artifacts 中包含的文件,paths 指定路径下的文件都会包含在 artifacts 中
  • paths 参数支持通配符
  • 使用 only: tags 可以设置仅为打了 tag 的 pipeline 生成 artifacts 文件

artifacts:public

  • 指定游客和匿名用户是否可以获取开放 pipeline 的 artifacts 文件, 默认值为 true

artifacts:reports

  • 可以收集 pipeline job 相关的报告:测试报告、代码质量报告、安全检测报告,这些报告会展示在GitLab 合并请求、pipeline、安全仪表板(security dashboards)模块

artifacts:untracked

  • untracked 为true时,可以将 .gitignore 中被忽略的文件打包进 artifacts 中(如果在.gitlab-ci.yml 中已设置生成 artifacts ),为 false 时,忽略 .gitignore 中被忽略的文件

artifacts:when

  • 指定 job 在什么状态下上传 artifacts 文件
  • 可设定值:
    • on_success: 默认值,仅当 job 成功时上传 artifacts
    • on_failure: 仅当 job 失败时上传 artifacts
    • always: 无论 job 什么状态,都会上传 artifacts

retry

  • 指定 job 失败时重试次数,最大重试次数:2

  • when 可以指定出现哪些失败时要重试

    参数 描述
    always 默认值,job 无论什么原因失败都要重试
    unknown_failure job 失败原因未知时,重试
    script_failure script 运行错误导致 job 失败时重试
    api_failure api错误导致job失败时重试
    stuck_or_timeout_failure 当job因为某些原因卡住或超时失败时重试
    runner_system_failure runner 系统错误导致 job 失败时重试
    missing_dependency_failure 找不到依赖导致 job 运行失败时重试
    runner_unsupported runner 不支持导致 job 失败时重试
    stale_schedule 被延迟的 job 不能运行时重试
    job_execution_timeout script 执行超时导致 job 运行失败时重试
    archived_failure job 被归档不能运行时重试
    unmet_prerequisites job 未完成前置任务导致运行失败时重试
    scheduler_failure job 未完成前置任务导致运行失败时重试
    data_integrity_failure 检测到数据不完整时重试
    示例:

timeout

posted @ 2021-04-26 19:37  大陆隔着海洋  阅读(1858)  评论(0编辑  收藏  举报