stages: - test - build variables: DOCKER_DRIVER: overlay2 test: stage: test image: laravelsail/php84-composer services: - name: mysql:8.0 alias: mysql variables: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: hunting_api MYSQL_ALLOW_EMPTY_PASSWORD: "yes" DB_CONNECTION: mysql DB_HOST: mysql DB_PORT: 3306 DB_DATABASE: hunting_api DB_USERNAME: root DB_PASSWORD: root APP_ENV: testing APP_KEY: base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= before_script: - apt-get update && apt-get install -y git zip unzip # 1️⃣ Installer les dépendances PHP - composer install --no-interaction --prefer-dist # 2️⃣ Générer un .env pour la CI (à partir de .env.example si tu l'as) - cp .env.example .env || touch .env # 3️⃣ Regénérer la clé (APP_KEY déjà dans les variables mais ça ne gêne pas) - php artisan key:generate --force # 4️⃣ Lancer les migrations (DB du service mysql) - php artisan migrate --force script: - php artisan test # 🐳 Build + push image dans le registry GitLab docker-build-push: stage: build image: docker:24 services: - docker:24-dind variables: DOCKER_TLS_CERTDIR: "/certs" IMAGE_TAG: "$CI_REGISTRY_IMAGE:${CI_COMMIT_SHORT_SHA}" before_script: # Login au registry GitLab - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" script: # Build de l'image à partir du Dockerfile de la racine - docker build -t "$IMAGE_TAG" . # Tag 'latest' en plus (optionnel mais pratique) - docker tag "$IMAGE_TAG" "$CI_REGISTRY_IMAGE:latest" # Push des tags - docker push "$IMAGE_TAG" - docker push "$CI_REGISTRY_IMAGE:latest" only: - main