jenkins - 如何在声明性管道中使用矩阵部分
问题描述
我有以下管道。我需要这个管道同时在 4 个不同的节点上运行。我已经读过在声明性管道中使用矩阵部分是完成这项工作的关键。我该如何使用下面的管道来做到这一点?
pipeline
{
stages
{
stage ('Test')
{
steps
{
script
{
def test_proj_choices = ['AD', 'CD', 'DC', 'DISP_A', 'DISP_PROC', 'EGI', 'FD', 'FLT', 'FMS_C', 'IFF', 'liblO', 'libNGC', 'libSC', 'MISCMP_MP', 'MISCMP_GP', 'NAV_MGR', 'RADALT', 'SYS', 'SYSIO15', 'SYSIO42', 'SYSRED', 'TACAN', 'VOR_ILS', 'VPA', 'WAAS', 'WCA']
for (choice in test_proj_choices)
{
stage ("${choice}")
{
echo "Running ${choice}"
build job: "UH60Job", parameters: [string(name: "TEST_PROJECT", value: choice), string(name: "SCADE_SUITE_TEST_ACTION", value: "all"), string(name: "VIEW_ROOT", value: "myview")]
}
}
}
}
}
}
}
解决方案
一篇有用的文章可以在这里找到:https ://www.jenkins.io/blog/2019/11/22/welcome-to-the-matrix/
这里的官方文档:https ://www.jenkins.io/doc/book/pipeline/syntax/#declarative-matrix
因此,语法应该是:
pipeline {
agent none
stages {
stage('Tests') {
matrix {
agent any
axes {
axis {
name 'CHOICE'
values 'AD', 'CD', 'DC', 'DISP_A', 'DISP_PROC', 'EGI', 'FD', 'FLT', 'FMS_C', 'IFF', 'liblO', 'libNGC', 'libSC', 'MISCMP_MP', 'MISCMP_GP', 'NAV_MGR', 'RADALT', 'SYS', 'SYSIO15', 'SYSIO42', 'SYSRED', 'TACAN', 'VOR_ILS', 'VPA', 'WAAS', 'WCA'
}
}
stages {
stage("Test") {
steps {
echo "Running ${CHOICE}"
build job: "UH60Job", parameters: [string(name: "TEST_PROJECT", value: CHOICE), string(name: "SCADE_SUITE_TEST_ACTION", value: "all"), string(name: "VIEW_ROOT", value: "myview")]
}
}
}
}
}
}
}
请注意,您的内部stage
不能动态命名,尝试扩展时会出现语法错误"${CHOICE}"
。
推荐阅读
- html - 如何修复网页上的自定义 HTML 光标问题?
- sql - 从部门表中查找 loc 中的单个“o”
- javascript - 循环javascript多数组
- haskell - 将覆盖应用到 haskellPackages
- php - 使用 PHP 连接到 MAMP(MySQL 服务器)
- google-cloud-firestore - 如何在本地存储 Firestore 文档?
- postgresql - postgresql中的序列和动态序列有什么区别?
- mysql - MySQL 5.7 - 使用非规范化表取消透视和展平分层数据集
- node.js - 从 redux-persist 导入 PersistGate 会导致“超级表达式必须为空或函数,而不是未定义”
- string - VBA 在单元格中查找数字、字母和字符并仅用数字/字母替换单元格的内容