feat(ci): support private Docker registry via env vars
Add DOCKER_REGISTRY and DOCKER_REGISTRY_PREFIX environment variables to ci/build_matrix.py for pulling base images from a private registry (Artifactory, Harbor, etc.) instead of Docker Hub. Document CI usage and registry configuration in README.
This commit is contained in:
@@ -158,6 +158,50 @@ all:
|
||||
remote_users_fact_state: absent
|
||||
```
|
||||
|
||||
## CI / Tests
|
||||
|
||||
Le rôle est testé automatiquement sur toutes les distributions déclarées dans `meta/main.yml` via Docker.
|
||||
|
||||
### Commandes Make
|
||||
|
||||
```bash
|
||||
make help # Affiche les cibles disponibles
|
||||
make matrix # Affiche la matrice JSON des distros
|
||||
make lint # yamllint + ansible-lint
|
||||
make test # Teste toutes les distros
|
||||
make test-el9 # Teste une seule distro
|
||||
make clean # Supprime les images Docker de test
|
||||
```
|
||||
|
||||
### Registry privée
|
||||
|
||||
Par défaut les images sont tirées depuis Docker Hub. Pour utiliser une registry privée (Artifactory, Harbor, etc.), définir les variables d'environnement :
|
||||
|
||||
| Variable | Défaut | Exemple |
|
||||
|---|---|---|
|
||||
| `DOCKER_REGISTRY` | *(vide = Docker Hub)* | `registry.nuevolia.dev` |
|
||||
| `DOCKER_REGISTRY_PREFIX` | *(vide)* | `library/` |
|
||||
|
||||
```bash
|
||||
# Artifactory
|
||||
DOCKER_REGISTRY=registry.nuevolia.dev DOCKER_REGISTRY_PREFIX=library/ make test
|
||||
|
||||
# Harbor
|
||||
DOCKER_REGISTRY=harbor.local DOCKER_REGISTRY_PREFIX=proxy/ make test
|
||||
```
|
||||
|
||||
### Pipelines CI
|
||||
|
||||
Trois configurations sont fournies :
|
||||
|
||||
| Fichier | Système | Stratégie |
|
||||
|---|---|---|
|
||||
| `.gitea/workflows/ci.yml` | Gitea Actions | Matrix dynamique parallèle |
|
||||
| `.gitlab-ci.yml` | GitLab CI | Séquentiel |
|
||||
| `Jenkinsfile` | Jenkins | Stages parallèles |
|
||||
|
||||
Les variables `DOCKER_REGISTRY` et `DOCKER_REGISTRY_PREFIX` peuvent être définies dans les secrets/variables de chaque CI.
|
||||
|
||||
## Utilisation dans d'autres playbooks
|
||||
|
||||
```yaml
|
||||
|
||||
+11
-1
@@ -2,6 +2,7 @@
|
||||
"""Parse meta/main.yml platforms and output a Docker test matrix as JSON."""
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
@@ -18,6 +19,14 @@ PLATFORM_IMAGE_MAP = {
|
||||
"Ubuntu": "ubuntu",
|
||||
}
|
||||
|
||||
def _resolve_image(image: str) -> str:
|
||||
"""Prefix image with registry and namespace if configured via env vars."""
|
||||
registry = os.environ.get("DOCKER_REGISTRY", "").strip().rstrip("/")
|
||||
prefix = os.environ.get("DOCKER_REGISTRY_PREFIX", "").strip()
|
||||
if registry:
|
||||
return f"{registry}/{prefix}{image}"
|
||||
return image
|
||||
|
||||
def build_matrix(meta_path: str = "roles/remote_users_fact/meta/main.yml") -> list[dict]:
|
||||
meta_file = Path(meta_path)
|
||||
if not meta_file.exists():
|
||||
@@ -43,9 +52,10 @@ def build_matrix(meta_path: str = "roles/remote_users_fact/meta/main.yml") -> li
|
||||
for version in platform.get("versions", []):
|
||||
version_str = str(version)
|
||||
slug = f"{name.lower()}{version_str}" if name == "EL" else f"{name.lower()}-{version_str}"
|
||||
base_image = f"{image_prefix}:{version_str}"
|
||||
matrix.append({
|
||||
"slug": slug,
|
||||
"image": f"{image_prefix}:{version_str}",
|
||||
"image": _resolve_image(base_image),
|
||||
"platform": name,
|
||||
"version": version_str,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user