I have a pretty complex matrix:
- e2e:
name: << matrix.target >>-k8s:<< matrix.k8sVersion >>-v6:<< matrix.ipv6 >>
matrix:
alias: test/e2e
parameters:
k8sVersion: [v1.19.16-k3s1, v1.21.7-k3s1, kind]
ipv6: [true, false]
target: [test/e2e-kubernetes, test/e2e-universal, test/e2e-multizone]
Some of these entries don’t make sense together (for example there’s no support for v1.19 and ipv6.
I therefore would like to use the exclude feature.
Unfortunately it seems like partial matches don’t work.
I’d like to do:
exclude:
- ipv6: true
k8sVersion: v1.19.16-k3s1
And it would exclude all combinations for each: test/e2e-kubernetes, test/e2e-universal, test/e2e-multizone .
The only workaround I found is either adding conditions inside the job with unless but it still starts jobs that won’t do anything (I have a single echo step to not have circle fail).
Other option is to iterate all invalid combinations in an exclude which ends up being many and error prone.