当前位置:网站首页>Jenkins - Copy Artifact 插件 Build 之间数据共享传递
Jenkins - Copy Artifact 插件 Build 之间数据共享传递
2022-06-28 00:15:00 【wumingxiaoyao】
引言
实现 CICD 的过程中,Jenkins Pipeline Job Build 之间需要传递共享数据,比如,有一个 Test Job 用来跑测试用例,跑完后会生成一个测试结果文件,另外一个 Report Job 是用于邮件通知测试结果,需要测试结果文件,那么就需要从 Test Job 中 拷贝测试结果文件。或则为了统计历史数据,本次 Build 的结果需要基于上次 Build 的数据添加新的数据,那么就需要拷贝上一个 Build 的结果文件。Copy Artifact Plugin 可以满足这个需求,本文就来介绍一下这个插件。
内容提要:
- Copy Artifact Plugin 简介和安装
- Copy Artifact Plugin 应用
Copy Artifact Plugin 简介和安装
Copy Artifact 应用于 Jenkins Job 拷贝 Archive the artifacts 归档文件,可以指定具体哪个 Build (例如:the last successful/stable build, by build number, or by a build parameter),也可以过滤控制拷贝哪些文件及拷贝到哪个目标文件夹。还可以从 workspace 目录拷贝文件。
这个插件不在 Jenkins 建议安装的插件列表中,所以想使用该插件,需要单独安装。
Manage Jenkins -> Plugin Manger
安装成功后,打开 Job Configure, Add build step 选项中可以看到 Copy artifacts from another project
Copy Artifact Plugin 应用
文件归档 Archive the artifacts
应用这个 Plugin 之前,需要将共享的文件进行归档处理。通过 Post-build Actions 添加 Archive the artifacts 选项。

将 workspace 目录下的文件进行归档,归档成功后的文件可以通过 URL 来访问:JenkinsURL/…JobPath/BuildNo/artifact/
Copy artifacts from another project 应用
文件归档后,就可以访问拷贝了
例如下面的配置,从目标 job 最后一个 build 归档目录中拷贝所有归档的 csv 文件到当前 Job 的 workspace 根目录下。

Build 成功后,workspace 就看到拷贝的文件了。

这里需要提醒一下,默认 Job Configure 中,会删除 workspace,如果需要保留 workspace 就不要勾选。为了节约存储空间,建议还是勾选,可通过 Arhicve the artifacts 归档一些需要的文件。
Copy artifacts from another project 详细设置
对目标 Build,有很多个选项,有些从名字就能看出来,可根据需要选择。
Specific build 选项
举个指定具体 Build No 的例子,可通过变量访问动态获取。
当然也可以通过 Pipeline Groovy 脚本设置变量。
举例:一个 Jenkins Pipeline Job,并行触发 Smoke 和 Regression Job,最后触发 Report job 邮件通知,之间参数互相传递。
#!groovy
pipeline {
options {
buildDiscarder(logRotator(numToKeepStr: '15', daysToKeepStr: '15'))
}
agent {
label "Linux1" }
parameters {
string(name: 'branch', defaultValue: 'master', description: 'example : master')
string(name: 'env', defaultValue: 'dev', description: 'example : dev')
string(name: 'project_name', defaultValue: 'Project XXX', description: 'example : Project XXX')
string(name: 'email_list', defaultValue: '[email protected]',
description: 'example : [email protected]')
}
stages{
stage('Testing'){
parallel{
stage('Smoke') {
agent {
label "Linux1" }
steps {
script {
def smoke_build = build job: 'Smoke-Job',
propagate: false,
parameters: [
string(name: 'branch', value: "${params.branch}"),
string(name: "env", value: "${params.env}")
]
smoke_full_project_name = smoke_build.getFullProjectName()
smoke_build_num = smoke_build.getNumber()
}
}
}
stage('Regression') {
agent {
label "Linux1" }
steps {
script {
def regression_build = build job: 'Reg-Job',
propagate: false,
parameters: [
string(name: 'branch', value: "${params.branch}"),
string(name: "env", value: "${params.env}")
]
regression_full_project_name = regression_build.getFullProjectName()
regression_build_num = regression_build.getNumber()
}
}
}
}
}
}
post {
always {
build job: '../Report-JOB',
parameters: [
string(name: 'smoke_job', value: "${smoke_full_project_name}"),
string(name: 'smoke_build_num', value: "${smoke_build_num}"),
string(name: 'regression_job', value: "${regression_full_project_name}"),
string(name: 'regression_build_num', value: "${regression_build_num}"),
string(name: 'branch', value: "${params.branch}"),
string(name: 'env', value: "${params.env}"),
string(name: 'project_name', value: "${params.project_name}"),
string(name: 'email_list', value: "${params.email_list}")
]
}
}
}
Specified by a build parameter 选项
先添加一个 Build selector for Copy Artifact 参数
Copy arfifacts from another project,选择 Specified by a build parameter 选项, Parameter Name 直接填上前面添加的 Build selector for Copy Artifact 参数名即可。
有关 Project Name 和 Permalink 参数,均可以从 Job 首页获取。
Project Name 就是 Full project name,可以避免 Job 之间识别问题。
Permalink 参数之前一直很困惑,后面才发现其实就是基于 Job 的固定 URL,当前 Job 首页就能看到这些信息。
例如:lastBuild 的 Permalinks
https://jenkinsURL/projectURL/lastBuild/

边栏推荐
- pytorch_lightning.utilities.exceptions.MisconfigurationException: You requested GPUs: [1] But...
- Appium自动化测试基础 — ADB常用命令(一)
- [Yocto RM]1 - System Requirements
- Réseau neuronal pour la solution détaillée Multi - diagrammes de fondation zéro
- 类的初始化与回调的用法
- 如何高效读书学习
- [embedded foundation] memory (cache, ram, ROM, flash)
- Cesium Color 颜色(赋值)随机颜色
- Web3 technology initial experience and related learning materials
- Jenkins - Pipeline 概念及创建方式
猜你喜欢

Adobe Premiere基础-声音调整(音量矫正,降噪,电话音,音高换挡器,参数均衡器)(十八)

如何理解 Transformer 中的 Query、Key 与 Value

Numpy----np. Tile() function parsing

1382. 将二叉搜索树变平衡-常规方法

Drug interaction prediction based on learning size adaptive molecular substructure

Adobe Premiere Basics - common video effects (cropping, black and white, clip speed, mirroring, lens halo) (XV)

Intranet penetration with FRP

【牛客讨论区】第四章:Redis

嵌入式必学,硬件资源接口详解——基于ARM AM335X开发板 (上)

How to understand query, key and value in transformer
随机推荐
Numpy----np.reshape()
Cesium Color 颜色(赋值)随机颜色
[Yocto RM]1 - System Requirements
Intensive reading of transformer thesis paragraph by paragraph
Review of drug discovery-02-prediction of molecular properties
centos8-操作记录-命令版-yum-redis-mysql-nacos-jdk
Cesium 多边形(polygon)extrudedHeight 和 height 的区别
Numpy----np. meshgrid()
ionic4实现半星评分
Is it safe to open an online futures account?
机器学习笔记 - 时间序列作为特征
引用层reboot后的大体流程
【牛客討論區】第四章:Redis
【嵌入式基础】串口通信
JS 数组随机取值(随机数组取值)
geojson 格式說明(格式詳解)
Maimai hot post: Why are big factories keen on making wheels?
TIA botu_ Concrete method of making analog input and output Global Library Based on SCL language
Adding text labels to cesium polygons the problem of polygon center point offset is solved
Réseau neuronal pour la solution détaillée Multi - diagrammes de fondation zéro