gitlab-ci.yml关键字(四)allow_failure 、artifacts 、cache

news2024/9/24 9:20:22

allow_failure

我们知道,流水线作业在运行时如果失败了,就会停止运行,但allow_failure可以让我们自由的控制当前作业失败时,是否还需要继续运行。

  • 要让管道继续运行后续作业,请使用allow_failure: true
  • 要停止管道运行后续作业,请使用allow_failure: false

示例

失败后不运行

下面两个job,第一个Job是在test阶段,第二个job是在deploy阶段,如果第一个job运行失败了,那么第二个job就不会执行

first_job:
  stage: test
  script: 
    - NRM = "https://www.xxx.xx"
    - echo "output variable in before_script ${NRM}"
  allow_failure: false

second_job:
  stage: deploy
  script:
    - echo "this is second job"

效果如下所示:
在这里插入图片描述

允许允许失败

first_job:
  stage: test
  script: 
    - NRM = "https://www.xxx.xx"
    - echo "output variable in before_script ${NRM}"
  allow_failure: true

second_job:
  stage: deploy
  script:
    - echo "this is second job"

此时第一个job即便是失败了,第二个job也会执行
此时整个流水线的状态是一个橙色的感叹号,如下:
在这里插入图片描述
在这里插入图片描述

artifacts

artifacts 用于在流水线执行过程中将作业的产物(制品)附加到项目的指定路径下。
一般情况下仅针对成功作业收集制品。并且如果制品的大小小于Gitlab的最大文件大小,那就可以在Gitlab UI中下载制品。

示例

artifacts:paths

用于指定制品的路径,只能是项目内的。

my_job:
  stage: test
  script: 
    - echo "there is artifacts in pipeline"
  artifacts:
    paths:
      - lint/
      - eslint-report.json

上述流水线任务指定了一个目录和一个文件作为流水线的制品。流水线执行完之后,可以在Gitlab UI 中下载他们。实际工作中的场景一般是在执行流水线任务时会执行各种各样的脚本,有时这些脚本会产生一些文件,比如单测,单测运行完之后会有一个报告,这个报告就可以作为制品提供出来。然后分析这份报告,进而得出此次单测运行的结果如何。
在这里插入图片描述
点击下载之后可以看到压缩包中有两个制品。一个是指定目录一个是指定的文件
在这里插入图片描述

artifacts:expire_in

expire_in用于指定作业制品存储多长时间。过期后,工件默认每小时删除一次(使用 cron 作业),并且无法再访问。如果单位未提供,默认为秒
一些值的示例

  • ‘42’
  • 42 seconds
  • 3mins 4sec
  • 2 hrs 20 min
  • 2h20min
  • 6 mos 1 day
  • 3 weeks and 2 days
  • never
my_job:
  stage: test
  script: 
    - echo "there is artifacts in pipeline"
  artifacts:
    paths:
      - lint/
      - eslint-report.json
    expire_in: 1 mins 10 sec

在这里插入图片描述

artifacts:name

使用artifacts:name关键字定义创建制品的名称。如果不定义,默认名称为artifacts,下载时变为artifacts.zip。

my_job:
  stage: test
  script: 
    - NAME="report"
    - echo "there is artifacts in pipeline"
  artifacts:
    name: "myArtifacts"
    paths:
      - lint/
      - eslint-report.json

在这里插入图片描述

cache

使用cache用于在作业至极爱你缓存文件和目录。
最常见的一种情况比如在job1中npm i 安装了该项目的依赖,到job2的时候,是一个新的执行环境此时 node_module就没有了。那依赖于node_modules的一些命令或者环境也就在job2中没法用了,此时我们就可以将node_module 缓存。这样就无需在后续作业中再次安装依赖了。
或者是job1产生了一些结果需要传递给job2。又或者是某些配置/变量需要在不同job中用到,此一类的情况我们都可以使用cache来实现

示例

cache:paths

使用cache:paths关键字选择要缓存的文件或目录。
下面的脚本是在job1中安装了项目依赖,然后将node_modules作为缓存传递至job2中。
然后再job2中可以看到node_modules 中有哪些文件依赖

job1:
  stage: test
  script: 
    - npm i
    - echo "there is cache in pipeline"
  cache:
    paths:
      - node_modules

job2:
  stage: deploy
  cache:
    paths:
      - node_modules
  script:
    - echo "this is job2"
    - ls node_modules

在这里插入图片描述

在这里插入图片描述

cache:key

很自然的,一旦我们的流水线复杂之后,有可能有很多的缓存,而不同阶段的不同job之间可能需要某些特定的缓存。
此时就需要使用cache:key来为每个缓存提供唯一的标识键。使用相同缓存键的所有作业都使用相同的缓存,包括在不同的管道中。
如果未设置,则默认键为default. 所有带有cache关键字但不cache:key共享default缓存的作业。可以看到上面的示例中创建cache的都是default-xxx开头的
使用缓存的job必须与 一起使用cache: paths,否则不缓存任何内容。

job1_1:
  stage: test
  script: 
    - npm i
    - echo "gen node_modules cache in job1_1"
  cache:
    key: depend-$CI_PROJECT_NAME
    paths:
      - node_modules

job1_2:
  stage: test
  script: 
    - echo "gen audit.txt cache in job1_2"
    - touch audit.txt
  cache:
    key: audit-$CI_PROJECT_NAME
    paths:
      - audit.txt

job2_1:
  stage: deploy
  cache:
    key: depend-$CI_PROJECT_NAME
    paths:
      - node_modules
  script:
    - echo "this is job2_1"
    - ls node_modules

job2_2:
  stage: deploy
  cache:
    key: audit-$CI_PROJECT_NAME
    paths:
      - audit.txt
  script:
    - echo "this is job2_2"
    - ls

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/131934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OASIS协议标准文档的解读_第一部分

译者注: 利用2022年圣诞假期,终于解读完OASIS标准协议的文档。本翻译文档基于SEMI 草案标准 3626 (2003/04/23). 因为SEMI的原版标准草案涉及到版权的一些问题,并不是公开的。因此我并不是原文原样翻译,会加入很多我自己的理解和…

cnpm : 无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

从报错来看明显是没有装 cnpm 检查本地是否安装了cnpm包管理工具 命令:npm list --depth0 -global 查看一下电脑是否安装了cnpm 如果已经安装了,那么会有如下图所示的内容: 从以上来看确实是没有装 则需要安装镜像,执行命令为…

Vue3详细讲解

Vue 3 介绍 文章目录Vue 3 介绍为什么要学习 vue 3Vue3 动机 和 新特性Vite 的使用vite介绍为什么选 Vite ?Vite 的基本使用Vue3.0项目介绍vscode插件说明组合式APIcomposition API vs options API体验 composition APIsetup 函数reactive 函数ref 函数script setup…

【云原生 | Kubernetes 实战】19、K8s Ingress-Controller 高可用方案

目录 一、Ingress 和 Ingress Controller 概述 1.1 回顾下 service 四层代理 1.2 Ingress 介绍 1.3 Ingress Controller 介绍 1.4 Ingress 和 Ingress Controller 总结 1.5 使用 Ingress Controller 代理 k8s 内部 pod 的流程 二、创建两个 ingress-controller 高可用…

凌云驭势 亚马逊云科技开启re:Invent中国行

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业近日,亚马逊云科技召开了2022 re:Invent全球大会。作为云计算的开创者,每年亚马逊云科技举办的re:Invent全球大会都会成为产业的风向标,备受业内人士关注。2022年,面对全球数字…

【STL学习之路】vector的模拟实现

文章目录一、接口总览二、vector成员变量三、默认成员函数构造函数① -- 默认无参构造构造函数② -- 迭代器区间构造构造函数③ -- n个val构造拷贝构造函数赋值运算符重载析构函数四、迭代器六、容量以及元素访问的相关接口emptysize和capacityreserveresize七、增删查改等接口…

async await 的基础使用和实现原理

async await 使用基础原理 async/await用法 其实你要实现一个东西之前,最好是先搞清楚这两样东西 这个东西有什么用? 这个东西是怎么用的? 有什么用? async/await的用处就是:用同步方式,执行异步操作&…

商会机构源码模板系统包含了信息管理、新闻管理、广告管理、系统管理等功能 v3.9

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 XYCMS商会机构源码模板系统是以aspaccess进行开发的商会网站源码,包含了信息管理、新闻管理、广告管理、系统管理等功能。 XYCMS商会机构源码模板系统功能简述: 商…

大数据面试题Spark篇(1)

1.spark数据倾斜 数据倾斜俩大直接致命后果:Out Of Memory,运行速度慢。这主要是发生在Shuffle阶段。同样Key的数据条数太多了。导致了某个key所在的Task数据量太大了,远远超过其他Task所处理的数据量。 数据倾斜一般会发生在shuffle过程中…

使用Eclipse开发第一个Java程序

虽然在《使用记事本编写运行Java程序》一节中已经开发过一个 Java 程序,但是那毕竟是通过记事本创建的。在上一节《Java Eclipse下载安装教程》中,我们已经安装了 Eclipse 工具,因此本节将介绍如何通过 Eclipse 开发 Java 程序。 在 Eclipse …

SD存储卡介绍

SD存储卡简介 SD存储卡是一种基于半导体快闪记忆器的新一代记忆设备,由于它体积小、数据传输速度快、可热插拔等优良的特性,被广泛地于便携式装置上使用,例如数码相机、平板电脑、多媒体播放器等。 SD存储卡实物图 SD存储卡特点 1、高存储容…

痞子衡嵌入式:Farewell, 我的写博故事2022

-- 题图:苏州荷塘月色 2022 年的最后一天,写个年终总结。困扰大家三年之久的新冠疫情终于在 12 月全面放开了,痞子衡暂时还没有阳,计划坚持到总决赛。对于 2023 年,痞子衡还是充满期待的,慢慢要恢复到 2019…

Codewars 你虐我千百遍,我待你如初恋

本人最近接触了Codewars啥的,没什么见识哈哈哈哈,刚开始看不懂啥的,到后面看多了其实也还好。我是小白轻点喷!!!接下来就让我展示第一次写文章的历程吧,showTime: 第一位嘉宾A出场 …

2022年终总结:生活就像一道过山车

又到了年末,今年的年终总结我考虑了很久,到底要不要写?可以写些什么? 今年过得十分匆忙,我一直在赶路,但事实上今年内做完的,能说出口的事可以说没有。 回顾下去年对今年的期望: 有…

魔幻2022,2023涅槃重生!

前言: 大家好,按照惯例,每年的年尾,这个时候我都会进行复盘,这是自己第4个年头进行年度复盘:总结2019,展望2020!不管过去如何,未来我们都要奋力前行!复盘2021…

01月份图形化三级打卡试题

活动时间 从2023年 1月1日至1月21日,每天一道编程题。 本次打卡的规则如下: (1)小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 (2)小朋友做完题目后&…

一个词语总结2022,你的是什么? | 2022 年度总结

一个词语总结2022,你的是什么? | 2022 年度总结前言回顾2022蓄力Unity 可寻址系统Unity 发布微信小游戏Unity 发布抖音小游戏Unity Mac AppStore内购Unity 后期处理蓄势付费专栏联袂推荐签约作者年度回忆展望20232023flag前言 2022马上即将过去。近期各…

机器学习理论和定理

在机器学习中, 有一些非常有名的理论或定理, 对理解机器学习的内在特性非常有帮助. 1. PAC学习理论 当使用机器学习方法来解决某个特定问题时, 通常靠经验或者多次试验来选择合适的模型、 训练样本数量以及学习算法收敛的速度等…

【MyBatis】如何使用“注解”来获取参数,以及其他方式?(底层原理解释)

目录 一、获取参数办法 1.1、多个参数时,直接传参,通过arg0...或param1...实现 1.2、通过传入map实现 1.3、实体化类对象传参 二、使用注解获取参数(最实用!建议经常使用) 三、建议!!&…

算法设计与分析复习01:主方法求递归算法时间复杂度

算法设计与分析复习01:主方法求递归算法时间复杂度 文章目录算法设计与分析复习01:主方法求递归算法时间复杂度复习重点算法复杂度分析——主方法例题1:例题2:例题3:复习重点 算法复杂度分析——主方法 T(n)aT(nb)f(n)…