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="BCRYPT_ROUNDS" value="4"/>
|
||||||
<env name="BROADCAST_CONNECTION" value="null"/>
|
<env name="BROADCAST_CONNECTION" value="null"/>
|
||||||
<env name="CACHE_STORE" value="array"/>
|
<env name="CACHE_STORE" value="array"/>
|
||||||
<env name="DB_CONNECTION" value="sqlite"/>
|
<env name="DB_DATABASE" value="testing"/>
|
||||||
<env name="DB_DATABASE" value=":memory:"/>
|
|
||||||
<env name="MAIL_MAILER" value="array"/>
|
<env name="MAIL_MAILER" value="array"/>
|
||||||
<env name="QUEUE_CONNECTION" value="sync"/>
|
<env name="QUEUE_CONNECTION" value="sync"/>
|
||||||
<env name="SESSION_DRIVER" value="array"/>
|
<env name="SESSION_DRIVER" value="array"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue