jenkins - Jenkins 声明式管道:如何将文件(在不同节点中退出)数据获取到数组中
问题描述
通过 Jenkins 声明式管道脚本,是否可以从不同节点读取文件数据?
示例:
我有 3 个节点(A 到 C)。
From A,我需要从所有其他节点读取文件数据并需要存储在一个数组中,然后 From AI 需要对这些 Array 值进行一些操作。我已经尝试过以下代码。
pipeline{
agent none
stages{
stage("Node-C"){
agent {
label "Node-C"
}
steps{
sh '''
arr1=($(grep -i "docker" /opt/abc/Text1.txt))
'''
}
}
stage("Node-B"){
agent {
label "Node-B"
}
steps{
sh '''
arr1+=($(grep -i "docker" /opt/abc/Text1.txt))
'''
}
}
stage("Node-A"){
agent {
label "Node-A"
}
steps{
sh '''
arr1+=($(grep -i "docker" /opt/abc/Text1.txt))
for i in "${arr1[@]}"
do
echo "== $i =="
done
'''
}
}
}
}
上面的脚本只打印 Node-A 的文件数据。但是,我们如何打印 Node-B 和 Node-C 数据呢?
解决方案
定义一个全局变量并读取该变量的值。
def str=''
pipeline{
agent any
stages {
stage('master'){
agent {
label 'master'
}
steps{
script { str +='am in node 1 ' }
}
}
stage('agent'){
agent {
label 'agent01'
}
steps{
script{ str += 'and am in node 2' }
}
}
stage('output'){
steps{
echo "${str}"
}
}
}
}
推荐阅读
- javascript - 我无法将我的 Buffer 数组分配给 React 状态
- .net - ACE DAO 记录集在 vb.net 下返回零字段
- compiler-construction - 在编译的哪个阶段,语法糖通常会“脱糖”
- ios - 带有 textField 和按钮的自定义视图没有响应
- sql - 在 SQL Server 中将负 Varchar、Null 转换为 Decimal
- javascript - 将 js 前端连接到 fastapi 应用程序 - 身份验证问题
- python-3.x - 从控制台文本输出中删除颜色代码
- python - 截断字符串并替换为“X”Python Pandas DataFrame
- python - 类型错误:预期字节,找到 pyarrow.lib.StringArray
- android - Android OrientationEventListener SensorManager.SENSOR_DELAY_NORMAL 必要性