pipeline { agent any stages { stage('Lint') { steps { sh 'pip install ansible-lint yamllint pyyaml' sh 'make lint' } } stage('Test Matrix') { steps { script { def matrixJson = sh(script: 'python3 ci/build_matrix.py', returnStdout: true).trim() def matrix = readJSON(text: matrixJson) def parallelStages = [:] matrix.each { entry -> def slug = entry.slug parallelStages[slug] = { sh "make test-${slug}" } } parallel parallelStages } } } } post { always { sh 'make clean || true' } } }