Comment créer et déployer une image Docker fonctionnelle d’Apereo CAS avec GitLab CI

Dans ce tutoriel détaillé, vous apprendrez à automatiser totalement la construction et la publication d’une image Docker fonctionnelle d’Apereo CAS avec support OAuth2 et OpenID Connect (OIDC), à l’aide d’une pipeline GitLab CI/CD.


Qu’est-ce que Apereo CAS ?

Apereo CAS est une solution open source permettant de centraliser l’authentification unique (SSO – Single Sign-On) pour vos applications.

Avantages principaux :

  • Authentification unique (SSO)
  • Support OAuth2, OpenID Connect (OIDC), SAML
  • Authentification LDAP
  • Haute sécurité et personnalisation facile

Objectifs de ce tutoriel

Nous allons :

  • Créer une image Docker d’Apereo CAS à partir du template officiel
  • Ajouter dynamiquement les modules nécessaires (LDAP, Redis, OAuth2, OIDC)
  • Construire et publier l’image avec un pipeline GitLab CI/CD

Prérequis

  • GitLab avec accès CI/CD
  • Docker installé sur les runners GitLab
  • Registre Docker (ex : GitLab Registry, Docker Hub)
  • Accès internet pour récupérer les dépendances Maven

Détail des modules utilisés

ModuleDescription
webapp-tomcatServeur Tomcat embarqué
support-json-service-registryDéclaration des services CAS via fichiers JSON
support-ldapAuthentification des utilisateurs via LDAP
support-surrogate-authentication-ldapAuthentification de substitution via LDAP
support-oauth-webflowFournisseur OAuth2
support-redis-ticket-registryStockage des tickets CAS dans Redis
support-bootadmin-clientSupervision via Spring Boot Admin
support-oidcFournisseur OpenID Connect

Exemple complet du fichier .gitlab-ci.yml

Voici un exemple complet, optimisé et prêt à l’emploi :

stages:
  - build

variables:
  IMAGE_NAME: ${CI_PROJECT_PATH}
  CAS_VERSION: "6.6.7"
  CAS_BRANCH: "6.6"
  CAS_MODULES: "support-json-service-registry,support-ldap,support-surrogate-authentication-ldap,support-oauth-webflow,support-redis-ticket-registry,support-bootadmin-client,support-oidc"
  DOCKER_REGISTRY_HOST: "votre-registre-docker.example.org"

docker-build:
  image: gradle:jdk11
  stage: build
  script:
    # Clonage du projet officiel CAS Overlay
    - git clone --branch ${CAS_BRANCH} https://github.com/apereo/cas-overlay-template.git overlay
    - cd overlay

    # Mise à jour de la version CAS
    - sed -i "s/^cas.version=.*/cas.version=${CAS_VERSION}/" gradle.properties

    # Injection dynamique des modules CAS nécessaires
    - echo "// --- Modules CAS additionnels ---" >> build.gradle
    - echo "dependencies {" >> build.gradle
    - |
      for mod in $(echo ${CAS_MODULES} | tr ',' ' '); do
        echo "    implementation \"org.apereo.cas:cas-server-${mod}:\${project.'cas.version'}\"" >> build.gradle
      done
    - echo "}" >> build.gradle

    # Build et push Docker via Jib
    - export DOCKER_TAG="v${CAS_VERSION}"
    - |
      ./gradlew jib \
        -Djib.to.image=${DOCKER_REGISTRY_HOST}/${IMAGE_NAME}:${DOCKER_TAG} \
        -Djib.to.auth.username=${CI_REGISTRY_USER} \
        -Djib.to.auth.password=${CI_REGISTRY_PASSWORD} \
        -PprivateRepoUrl=https://repo.maven.apache.org/maven2/ \
        --info

    # Export de l'image référence pour les jobs suivants
    - echo "IMAGE_REF=${DOCKER_REGISTRY_HOST}/${IMAGE_NAME}:${DOCKER_TAG}" > ../deploy.env

  artifacts:
    reports:
      dotenv: deploy.env

Explication des principales variables

VariableDescriptionExemple
CAS_VERSIONVersion de CAS à construire6.6.7
CAS_BRANCHBranche du projet CAS Overlay6.6
CAS_MODULESListe des modules CASVoir ci-dessus
DOCKER_REGISTRY_HOSTHôte de votre registre Dockerregistry.example.org
CI_REGISTRY_USER et CI_REGISTRY_PASSWORDVariables GitLab pour authentification au registredéfinies dans GitLab

Bonnes pratiques pour améliorer la performance

  • Utiliser le cache Gradle pour accélérer les builds ultérieurs :
cache:
  key: ${CAS_VERSION}
  paths:
    - .gradle/
  • Protéger les identifiants Docker en définissant les variables GitLab comme « protégées ».
  • Suivre les mises à jour du projet CAS Overlay régulièrement pour appliquer les correctifs de sécurité.

Conclusion

Avec ce pipeline CI/CD complet et optimisé, vous pouvez construire et publier en toute sécurité une image Docker d’Apereo CAS intégrant l’authentification LDAP, la gestion OAuth2/OIDC, et un stockage performant Redis.

Ce processus automatique réduit le temps de déploiement et garantit un serveur CAS fiable et personnalisable pour vos projets SSO.