54287ad9a0
Add CI infrastructure that tests the Ansible role on every distro declared in meta/main.yml (EL 8/9, Debian bullseye/bookworm, Ubuntu focal/jammy/noble) using Docker containers. - ci/build_matrix.py: parse meta/main.yml platforms into JSON matrix - ci/test_playbook.yml: test playbook (state=present + validate) - ci/Dockerfile.el, ci/Dockerfile.debian: per-family Docker images - Makefile: orchestrator (make test, make test-<slug>, make lint) - .gitea/workflows/ci.yml: Gitea Actions with dynamic matrix - .gitlab-ci.yml: GitLab CI pipeline - Jenkinsfile: Jenkins pipeline with parallel stages - .yamllint.yml: linter configuration - .dockerignore: exclude .git and CI configs from Docker context
36 lines
899 B
Groovy
36 lines
899 B
Groovy
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'
|
|
}
|
|
}
|
|
}
|