api/.gitlab-ci.yml

65 lines
1.5 KiB
YAML

stages:
- test
- build
variables:
DOCKER_DRIVER: overlay2
# 🔍 Étape tests (optionnelle mais recommandée)
test:
stage: test
image: laravelsail/php84-composer
services:
- name: mysql:8.0
alias: mysql
variables:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: hunting_api
MYSQL_USER: root
MYSQL_PASSWORD: root
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
- cp .env .env.ci || true
- php artisan key:generate --force
- 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