我有一个声明性管道Jenkinsfile,看起来像这样:
pipeline {
agent none
stages {
stage("Build and Test") {
matrix {
axes {
axis {
name 'PLATFORM'
values 'Windows', 'macOS'
}
}
}
stages {
agent {
node {
label PLATFORM
}
}
stage("Stage 1") {
steps {
sh "echo Stage 1"
}
}
stage("Stage 2") {
steps {
sh "echo Stage 2"
}
}
stage("Stage 3") {
steps {
sh "echo Stage 3"
}
}
}
}
}
}
这将在匹配axis
标签的两个滑道上并行运行三个阶段。在这种情况下,标签将匹配我的Windows和macOS运行器,因此我可以在两个平台上运行相同的阶段。
我想使用相同的结构并添加Linux。不幸的是,我的Linux运行者使用的agent
不是node
,而是kubernetes
。因此,Linux agent
应该看起来像这样:
agent {
kubernetes {
defaultContainer 'container_defined_in_yaml'
yamlFile 'k8s-build-pod.yaml'
}
}
是否可以“动态”构建agent
块,以便它可以基于label
值为Windows和macOS设置node
代理,为Linux设置kubernetes
代理?
1条答案
按热度按时间anhgbhbe1#
创建agentBlock定义
更新管道:
params.PLATFORM
的管道所需的代理