70 lines
1.8 KiB
YAML
70 lines
1.8 KiB
YAML
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
|