-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Minor
-
Component/s: pipeline-model-definition-plugin
This reddit question has convinced me that we need an "includes" directive for matrix.Â
User wanted a very sparse matrix:Â
| Arch | Platform | OS Variant | Device | Debug |
|---|---|---|---|---|
| aarch64 | pine64 | mobile | pinephone | y |
| aarch64 | pine64 | mobile | pinephone | n |
| x86_64 | pc | desktop | generic | y |
| x86_64 | pc | desktop | generic | n |
Â
In order to achieve that we had to do this:Â Â
Â
pipeline {
agent none
stages {
stage('Build') {
matrix {
agent any
axes {
axis {
name 'ARCH'
values 'aarch64', 'x86_64'
}
axis {
name 'PLATFORM'
values 'pine64', 'pc'
}
axis {
name 'VARIANT'
values 'mobile', 'desktop'
}
axis {
name 'DEVICE'
values 'pinephone', 'generic'
}
axis {
name 'DEBUG'
values 'y', 'n'
}
}
excludes {
exclude {
axis {
name 'ARCH'
values 'aarch64'
}
axis {
name 'PLATFORM'
notValues 'pine64'
}
}
exclude {
axis {
name 'ARCH'
values 'aarch64'
}
axis {
name 'VARIANT'
notValues 'mobile'
}
}
exclude {
axis {
name 'ARCH'
values 'aarch64'
}
axis {
name 'DEVICE'
notValues 'pinephone'
}
}
exclude {
axis {
name 'ARCH'
values 'x86_64'
}
axis {
name 'PLATFORM'
notValues 'pc'
}
}
exclude {
axis {
name 'ARCH'
values 'x86_64'
}
axis {
name 'VARIANT'
notValues 'desktop'
}
}
exclude {
axis {
name 'ARCH'
values 'x86_64'
}
axis {
name 'DEVICE'
notValues 'generic'
}
}
}
stages {
stage('Build') {
steps {
sh "bash ./scripts/build.sh x86_64 ${PLATFORM} ${VARIANT} TARGET_DEVICE=${DEVICE} DEBUG=${DEBUG} TIDY=y"
}
}
}
}
}
}
}
Â
This is admittedly an extreme case but it seem like it isn't so unusual
Â
https://www.reddit.com/r/jenkinsci/comments/fzlfmb/jenkinsfile_matrix/