feat(ci): add multi-platform CI testing via Docker
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
This commit is contained in:
Vendored
+35
@@ -0,0 +1,35 @@
|
||||
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'
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user