gitlab--needs、default

简介: gitlab--needs、default

needs 并行阶段


可无序执行作业,无需按照阶段顺序运行某些作业,可以让多个阶段同时运行

例如下面的 ci 文件

stages:
  - build
  - test
  - deploy
module-a-build:
  stage: build
  script: 
    - echo "hello3a"
    - sleep 10
module-b-build:
  stage: build
  script: 
    - echo "hello3b"
    - sleep 10
module-a-test:
  stage: test
  script: 
    - echo "hello3a"
    - sleep 10
module-b-test:
  stage: test
  script: 
    - echo "hello3b"
    - sleep 10

运行上面的流水线

但现在我们可能需要,当 module-a-build 运行完成之后就运行 module-a-test,当 module-b-build 运行完成之后运行 module-b-test。这时候就需要 needs 了

修改 ci 文件,修改后的如下

stages:
  - build
  - test
module-a-build:
  stage: build
  script: 
    - echo "hello3a"
    - sleep 10
module-b-build:
  stage: build
  script: 
    - echo "hello3b"
    - sleep 30
module-a-test:
  stage: test
  script: 
    - echo "hello3a"
    - sleep 10
  needs: ["module-a-build"] # 当 module-a-build 运行完成之后就运行 module-a-test
module-b-test:
  stage: test
  script: 
    - echo "hello3b"
    - sleep 10
  needs: ["module-b-build"] # 当 module-b-build 运行完成之后就运行 module-b-test

运行流水线

可以查看作业依赖项

点击依赖关系图也可以看到


制品下载


在使用needs,可通过artifacts: trueartifacts: false来控制工件下载。 默认不指定为 true,表示下载制品

module-a-test:
  stage: test
  script: 
    - echo "hello3a"
    - sleep 10
  needs: 
    - job: "module-a-build"
      artifacts: true # 会下载 module-a-build 产生的制品


default


使用 default 可以定义每个 job 的参数,如果 job 里有,会覆盖 default 里的,例如下面的代码

default: # 定义了一个默认的参数
  tags: # 如果 job 里没有 tages,就使用这个 tags
    - build
  retry: # 如果 job 里没有 retry,就使用这个 tags
    max: 2
  before_script: # 如果 job 里没有 before_script,就使用这个 tags
    - echo "before_script"
stages:
  - build
  - test
build:
  stage: build
  before_script:
    - echo "我是 job 里的"
  script:
    - echo "我是 build 的 job"
test:
  stage: test
  script:
    - echo "test 的 job"

运行流水线,查看 build 的日志

在来看下 test


相关文章
|
前端开发 网络协议 JavaScript
|
缓存 JavaScript 算法
vue2和vue3之间diff算法的差异
vue2和vue3之间diff算法的差异
|
NoSQL 数据可视化 JavaScript
漂亮又好用的Redis可视化客户端汇总
漂亮又好用的Redis可视化客户端汇总
9945 0
漂亮又好用的Redis可视化客户端汇总
|
消息中间件 Java 中间件
秒懂消息队列MQ,万字总结带你全面了解消息队列MQ
消息队列是大型分布式系统不可缺少的中间件,也是高并发系统的基石中间件,所以掌握好消息队列MQ就变得极其重要。接下来我就将从零开始介绍什么是消息队列?消息队列的应用场景?如何进行选型?如何在Spring Boot项目中整合集成消息队列。
25401 10
秒懂消息队列MQ,万字总结带你全面了解消息队列MQ
|
开发工具 git
Git从远程仓库拉取指定的分支
Git从远程仓库拉取指定的分支
3363 0
|
Prometheus Kubernetes 监控
云原生|kubernetes |使用Prometheus监控k8s cAdvisor篇(进阶篇--- 一)(centos操作系统)
云原生|kubernetes |使用Prometheus监控k8s cAdvisor篇(进阶篇--- 一)(centos操作系统)
3244 0
|
5月前
|
Kubernetes Ubuntu 网络安全
Ubuntu系统关闭防火墙的正确方式
Ubuntu系统关闭防火墙的正确方式
898 2
|
Unix iOS开发 Ruby
解决CocoaPods installed but it is not working
解决CocoaPods installed but it is not working
764 5
|
Kubernetes 测试技术 数据安全/隐私保护
如何使用Vcluster实现Kubernetes中的多租户
如何使用Vcluster实现Kubernetes中的多租户
516 0
|
算法 JavaScript 前端开发
深入了解Vue2和Vue3的Diff算法差异!
总的来说,Vue3在Diff算法上的优化体现了更智能的静态内容处理、更高效的动态内容更新以及更灵活的内部结构。这些优化使得Vue3在运行时性能上有了显著的提升,尤其是在大型应用和复杂界面的场景下。通过不断地技术迭代和优化,Vue3为开发者提供了更高效、更易用的前端开发体验。
1098 6

热门文章

最新文章