jenkins pipeline如何在一个任务中触发另外一个任务以及从下游任务获取文件

这篇具有很好参考价值的文章主要介绍了jenkins pipeline如何在一个任务中触发另外一个任务以及从下游任务获取文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、 前言

        我们在创建jenkins任务的时候,有时候一个任务需要调用多个子任务来完成。比如,我们在编译某个镜像的时候,镜像由多个组件构成。那么我们就可以创建一个主任务以及多个子任务,主任务负责调用每个子任务,并将每个子任务的结果进行汇总,而子任务负责每个单组件的编译。

主任务和子任务的关系如下所示:

jenkins子任务,jenkins与CICD,编译原理和工具,jenkins,运维,Copy Artifact,触发下游任务,cicd

每个子任务都是独立的,有自己的工作空间。

这里需要区分几个概念:

 任务与job:简单来说,我们在jenkins上可以创建多个任务,每个都执行不同的功能。任务每执行一次成为一个job,对应一个jobnum

上游任务下游任务:如果主任务触发(即调用)了子任务,那么主任务就成为上游任务,自然子任务就可以成为下游任务。

举例如下:

可以看到下图中展示当前的任务名称为pipelinDebug, 本次任务构建的jobnum为#310,本次构建是上游任务(即主任务)触发的,对应的上游jobnum为33

jenkins子任务,jenkins与CICD,编译原理和工具,jenkins,运维,Copy Artifact,触发下游任务,cicd

2、如何在主任务中调用子任务

从上面的举例中,我们看到,上游任务parentjob触发了下游任务pipeDebug。那么具体如何实现呢?

以声明式脚本举例如下:

调用的基本格式为:

build job:"projectName", parameters:params

简单来说,只需要下游任务名称,和传递给下游任务的参数即可。

pipeline {
    agent any
    parameters {
        string(name: 'project_name', defaultValue: 'guest_os_image/windows/cloud_app/asp', description: '项目jar名称')
        string(name: 'version', defaultValue: 'test', description: '部署环境')
        string(name: 'user_name', defaultValue: 'aqsc', description: '操作系统登录名')
        booleanParam(name: 'dryrun', defaultValue: true)
    }
	stages{
        stage('test') {
            steps {
                script {
                    def myjob
                    myjob = build job :'pipelineDebug',parameters:[string(name: 'project', value: '/asp'),
                        string(name: 'version', value: 'dev')]
                    copyArtifacts( fingerprintArtifacts: true, projectName: 'pipelineDebug', selector: specific(job.getNumber().toString()))
                }
            }
        }
	}
        
}

3、上游任务如何获取下游任务的结果

3.1 上游任务从下游任务中复制文件

前面提到,每个子任务之前都是独立的,上游任务和下游任务之间虽然存在调用与被调用的关系,但是它们的工作空间都是独立的,一般都是运行在不同的服务器上,彼此之间存在隔离。那么上游任务如何获取到下游任务的结果呢?

这里需要用到一个插件:Copy Artifact

如果没有安装该插件的话,需要安装之后才能使用。

jenkins子任务,jenkins与CICD,编译原理和工具,jenkins,运维,Copy Artifact,触发下游任务,cicd

 安装好插件之后,下游任务只需要上传文件,上游任务只需要复制文件,这样上游任务可以可以获取下游任务的结果了。

假如下游任务生成了一个projectId.json,上游任务需要获取该json文件,实现如下:

下游任务(pipeDebug)中,增加一行代码,上传文件:

// 下游任务中上传文件
archiveArtifacts artifacts: 'projectId.json'

上游任务复制上传的文件:

def job
job = build job :'pipelineDebug',parameters:[string(name: 'project', value: '/asp'),
        string(name: 'version', value: 'dev')]
// 上游任务复制文件
copyArtifacts( fingerprintArtifacts: true, projectName: 'pipelineDebug', selector: specific(job.getNumber().toString()))

通过以上的两个操作,就实现了,将下游任务中的文件projectId.json复制到了上游任务的工作区

3.2 上游任务从下游任务复制文件的原理

上一节提到,上游任务如何从下游任务中复制文件。操作非常简单,那么现在简单说一说这个实现的原理。

要明白这个原理,只需要搞清楚两个问题:

下游任务所谓的上传文件,到底是上传到哪? 上游任务复制文件,到底是从哪复制?

这看起是两个问题,实际上是一个问题。

答案就是上传的jenkins网站上,或者说jenkin网站所在计算机。

因为不同的任务都是可以通过在jenkins网站上创建和触发的,因此如果将文件复制到jenkins所在网站上,那么自然不同的任务之间就可以共享文件了。

jenkins子任务,jenkins与CICD,编译原理和工具,jenkins,运维,Copy Artifact,触发下游任务,cicd

正因为如此,我们可以在下游任务的jenkins界面上看到上传的文件,并可以下载。如下图所示:

jenkins子任务,jenkins与CICD,编译原理和工具,jenkins,运维,Copy Artifact,触发下游任务,cicd

 文章来源地址https://www.toymoban.com/news/detail-674706.html

 

到了这里,关于jenkins pipeline如何在一个任务中触发另外一个任务以及从下游任务获取文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是上游任务、下游任务?

    ①上游任务 预训练模型。一般就是利用上游数据进行预训练,以生成一个包含视觉表征能力的模型。 比如,我们想要的是一个能够提取图片特征能力的卷积神经网络或者Transformer,我们会用大量图片用图片分类这个下游任务或者其他比如自监督的方法(可以参考CLIP)去进行

    2024年02月08日
    浏览(39)
  • 如何将linux数据从一个服务器复制到另外一个服务器

    首先先要确定两台服务器之间可以通讯 可以使用ping 服务器的地址查看是否通信 然后使用下面的步骤进行通讯 可以使用scp命令来在Linux系统中将文件或目录从一台服务器复制到另一台服务器。 语法为:scp [选项] 源路径 目标地址 其中,[选项]包括但不限于: 命令参数: 示例

    2024年01月19日
    浏览(46)
  • python如何调用另外一个py文件中的函数

    在Python中,可以通过导入模块的方式调用另外一个.py文件中的函数。具体步骤如下: 创建一个.py文件,其中包含需要调用的函数,例如: 在调用该函数的代码文件中,使用 import 导入这个.py文件(注意,要确保两个文件处于同一目录下),例如: 在这个例子中,首先

    2024年02月11日
    浏览(523)
  • 计算机视觉的上游任务和下游任务

    这几天看CV论文和视频,经常提及什么上游任务、下游任务。简单来说下游任务是具体部署,上游任务是训练一个用于特征提取的预训练模型,比如这几年很火的CLIP[1],GPT[2]。 --------------------------------------------------------------------------------------------------------------------------------

    2024年02月07日
    浏览(39)
  • 【计算机视觉】上游任务和下游任务的理解

    计算机视觉中有常见的四大任务: 分类(解决\\\"what\\\") 定位(解决\\\"where\\\") 检测(解决\\\"what\\\"和\\\"where\\\") 分割(实例分割、语义分割和场景分割等像素级别的处理) 预训练模型。一般就是利用上游数据进行预训练,以生成一个包含视觉表征能力的模型。 比如,我们想要的是一个

    2024年02月10日
    浏览(73)
  • SAM适配下游任务的探究:SAM Adapter

    本文分享自华为云社区《SAM适配下游任务的探究:SAM Adapter》,作者:Hint。 近期大模型的涌现给AI研究带来显著的发展,META的工作Segment Anything(SAM),就是其中一个为图像分割任务设计的基础大模型。SAM是一种交互型的图像分割大模型,通过提供的prompt如点、框、文本描述

    2024年02月13日
    浏览(41)
  • 用于物体识别和跟踪的下游任务自监督学习-1-引言

    一:引言: 图像和视频理解是计算机视觉应用中的基本问题,旨在使机器能够像人类一样解释和理解视觉数据。这些问题涉及识别图像和视频中的对象、人物、动作、事件和场景。如图1.1-(a)所示的图像识别任务包括对象检测[1]、实例[7]、语义[8]或全景分割[9],以定位对象

    2024年02月07日
    浏览(43)
  • 认识OCR,从文字检测到文字识别,从任务定义到下游任务,从形态学方法到深度学习

    图灵测试是人工智能是否真正能够成功的一个标准,“计算机科学之父”、“人工智能之父”英国数学家图灵在1950年的论文《机器会思考吗》中提出了图灵测试的概念。即把一个人和一台计算机分别放在两个隔离的房间中,房间外的一个人同时询问人和计算机相同的问题,如

    2024年01月16日
    浏览(40)
  • Jenkins+Docker+Docker-Compose自动部署,SpringCloud架构公共包一个任务配置

    前言 Jenkins和docker的安装,随便百度吧,实际场景中我们很多微服务的架构,都是有公共包,肯定是希望一个任务能够把公共包的配置加进去,一并构建,ok,直接上干货。 Jenkins 全局环境安装 这里使用 clean package -Dmaven.test.skip=true 使用docker内部网络,分配ip,参考docker创建网

    2024年02月15日
    浏览(43)
  • 【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式

    【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式 FesianXu 20230928 at Baidu Search Team Prompt Tuning是一种PEFT方法(Parameter-Efficient FineTune),旨在以高效的方式对LLM模型进行下游任务适配,本文简要介绍Prompt Tuning方法,希望对读者有所帮助。如有谬误请见谅并联系指

    2024年02月07日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包