feat: test ci/cd
This commit is contained in:
parent
f1c17f1d0c
commit
7b6b775e1d
|
|
@ -0,0 +1,6 @@
|
|||
.git
|
||||
vendor
|
||||
node_modules
|
||||
storage/logs
|
||||
storage/framework/cache/data
|
||||
.env
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# Dockerfile
|
||||
|
||||
FROM laravelsail/php84-composer AS build
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
# Copier le code
|
||||
COPY . .
|
||||
|
||||
# Installer les dépendances PHP (prod)
|
||||
RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
|
||||
|
||||
# Build des assets si tu utilises Vite
|
||||
# RUN npm ci && npm run build
|
||||
|
||||
# -----------------------------
|
||||
# Image finale (runtime)
|
||||
# -----------------------------
|
||||
FROM laravelsail/php84-composer
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
COPY --from=build /var/www/html /var/www/html
|
||||
|
||||
# Optimisations Laravel
|
||||
RUN php artisan config:cache \
|
||||
&& php artisan route:cache
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
CMD ["php-fpm"]
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
services:
|
||||
laravel.test:
|
||||
build:
|
||||
context: "./vendor/laravel/sail/runtimes/8.4"
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
WWWGROUP: "${WWWGROUP}"
|
||||
image: "sail-8.4/app"
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
ports:
|
||||
- "${APP_PORT:-80}:80"
|
||||
- "${VITE_PORT:-5173}:${VITE_PORT:-5173}"
|
||||
environment:
|
||||
WWWUSER: "${WWWUSER}"
|
||||
LARAVEL_SAIL: 1
|
||||
XDEBUG_MODE: "${SAIL_XDEBUG_MODE:-off}"
|
||||
XDEBUG_CONFIG: "${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}"
|
||||
IGNITION_LOCAL_SITES_PATH: "${PWD}"
|
||||
volumes:
|
||||
- ".:/var/www/html"
|
||||
networks:
|
||||
- sail
|
||||
depends_on:
|
||||
- mysql
|
||||
mysql:
|
||||
image: "mysql/mysql-server:8.0"
|
||||
ports:
|
||||
- "${FORWARD_DB_PORT:-3306}:3306"
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
|
||||
MYSQL_ROOT_HOST: "%"
|
||||
MYSQL_DATABASE: "${DB_DATABASE}"
|
||||
MYSQL_USER: "${DB_USERNAME}"
|
||||
MYSQL_PASSWORD: "${DB_PASSWORD}"
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: 1
|
||||
MYSQL_EXTRA_OPTIONS: "${MYSQL_EXTRA_OPTIONS:-}"
|
||||
volumes:
|
||||
- "sail-mysql:/var/lib/mysql"
|
||||
- "./vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh"
|
||||
networks:
|
||||
- sail
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- mysqladmin
|
||||
- ping
|
||||
- "-p${DB_PASSWORD}"
|
||||
retries: 3
|
||||
timeout: 5s
|
||||
networks:
|
||||
sail:
|
||||
driver: bridge
|
||||
volumes:
|
||||
sail-mysql:
|
||||
driver: local
|
||||
|
|
@ -23,8 +23,7 @@
|
|||
<env name="BCRYPT_ROUNDS" value="4"/>
|
||||
<env name="BROADCAST_CONNECTION" value="null"/>
|
||||
<env name="CACHE_STORE" value="array"/>
|
||||
<env name="DB_CONNECTION" value="sqlite"/>
|
||||
<env name="DB_DATABASE" value=":memory:"/>
|
||||
<env name="DB_DATABASE" value="testing"/>
|
||||
<env name="MAIL_MAILER" value="array"/>
|
||||
<env name="QUEUE_CONNECTION" value="sync"/>
|
||||
<env name="SESSION_DRIVER" value="array"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue