28 Commits

Author SHA1 Message Date
5afad53aa9 docs: auto-update memory 2026-03-21 22:50:11 +01:00
230f018f47 docker compose review 2026-03-21 22:43:10 +01:00
32c6bd56a5 ci: trigger deploy 2026-03-21 22:38:42 +01:00
5b870e1eb5 ci: trigger deploy 2026-03-21 22:37:27 +01:00
88c3088cc1 ci: trigger deploy 2026-03-21 22:36:37 +01:00
ae32eabc9c fix: generate .env from secrets in CI 2026-03-21 22:35:23 +01:00
69a3e55aa9 test 2026-03-21 22:33:21 +01:00
001209d12c add secrets 2026-03-21 22:31:42 +01:00
c8088251dd ci: use base64 encoded SSH key
Some checks failed
Deploy / deploy (push) Failing after 9s
2026-03-21 22:20:38 +01:00
7cc7ba66d8 ci: complete deploy workflow with tar+ssh
Some checks failed
Deploy / deploy (push) Failing after 26s
2026-03-21 22:16:47 +01:00
3c6356b578 ci: use tar+ssh instead of rsync
Some checks failed
Deploy / deploy (push) Failing after 26s
2026-03-21 22:13:06 +01:00
87d2f0add3 Update rsync
Some checks failed
Deploy / deploy (push) Failing after 8s
2026-03-21 22:11:22 +01:00
4eae30c0e5 fadsfsa
Some checks failed
Deploy / deploy (push) Failing after 8s
2026-03-21 22:09:47 +01:00
a39ff7b3b1 ci: install rsync on runner
Some checks failed
Deploy / deploy (push) Failing after 7s
2026-03-21 22:07:46 +01:00
c535d00947 Merge branch 'dev' of ssh://gitea.rigolet.tech:222/vincent/auditshield into dev
Some checks failed
Deploy / deploy (push) Failing after 7s
2026-03-21 22:05:27 +01:00
12cfb49c87 Merge branch 'feature/ci-deploy' into dev 2026-03-21 22:04:13 +01:00
046f542f6a Merge pull request 'feature/ci-deploy' (#4) from feature/ci-deploy into dev
Some checks failed
Deploy / deploy (push) Failing after 10s
Reviewed-on: #4
2026-03-21 20:58:58 +00:00
f733cd7d5b deploy : change ssh setting 2026-03-21 21:57:10 +01:00
9ac18ecc8d Merge pull request 'dev' (#3) from dev into feature/ci-deploy
Reviewed-on: #3
2026-03-21 17:39:07 +00:00
b2b1a3a0a0 ci: retry SSH deploy 2026-03-21 18:37:19 +01:00
03b5022016 ci: retry deploy 2026-03-21 18:32:41 +01:00
87ea0515ad ci: retry deploy 2026-03-21 18:31:19 +01:00
b967a0d69b Merge pull request 'feature/ci-deploy' (#2) from feature/ci-deploy into dev
Some checks failed
Deploy / deploy (push) Failing after 10s
Reviewed-on: #2
2026-03-21 17:11:17 +00:00
d25bc84373 ci: add NAS deploy workflow 2026-03-21 18:10:33 +01:00
41597c113f docs: auto-update memory 2026-03-21 17:43:58 +01:00
3f8d13936d fix: create public/ directory required by frontend Dockerfile COPY step
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 17:43:53 +01:00
58cb0e314d docs: auto-update memory 2026-03-21 17:37:49 +01:00
211fbefd53 fix: resolve Docker build failures for frontend
- Remove @radix-ui/react-badge (package inexistant sur npm) du package.json
- Rename next.config.ts → next.config.mjs (Next.js 14 ne supporte pas .ts)
- Générer package-lock.json requis par npm ci dans le Dockerfile
- Ajouter next-env.d.ts (généré par Next.js build, requis pour TypeScript)

Build Next.js vérifié : 6 pages générées (/, /login, /dashboard, /clients, /audits)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 17:37:32 +01:00
8 changed files with 7275 additions and 29 deletions

View File

@@ -11,7 +11,7 @@ DEBUG=false
# --- Base de données PostgreSQL ---
POSTGRES_DB=auditshield
POSTGRES_USER=auditshield
POSTGRES_PASSWORD=changeme-strong-password
POSTGRES_PASSWORD=AuditShield!
# Construit automatiquement par docker-compose, à définir manuellement en dev local :
DATABASE_URL=postgresql://auditshield:changeme-strong-password@localhost:5432/auditshield

View File

@@ -17,15 +17,45 @@ jobs:
id: env
run: |
if [ "${{ github.ref_name }}" = "main" ]; then
echo "ENV=prod" >> $GITHUB_OUTPUT
echo "COMPOSE_FILE=docker/docker-compose.prod.yml" >> $GITHUB_OUTPUT
echo "PROJECT_PATH=/volume1/docker/auditshield-prod" >> $GITHUB_OUTPUT
else
echo "ENV=dev" >> $GITHUB_OUTPUT
echo "COMPOSE_FILE=docker/docker-compose.yml" >> $GITHUB_OUTPUT
echo "PROJECT_PATH=/volume1/docker/auditshield-dev" >> $GITHUB_OUTPUT
fi
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.NAS_SSH_KEY_B64 }}" | base64 -d > ~/.ssh/nas_key
chmod 600 ~/.ssh/nas_key
ssh-keyscan -p 22 ${{ secrets.NAS_HOST }} >> ~/.ssh/known_hosts 2>/dev/null
- name: Copy files to NAS
run: |
ssh -i ~/.ssh/nas_key -o StrictHostKeyChecking=no root@${{ secrets.NAS_HOST }} \
"mkdir -p ${{ steps.env.outputs.PROJECT_PATH }}"
tar --exclude='.git' --exclude='node_modules' --exclude='.env' -czf - . | \
ssh -i ~/.ssh/nas_key -o StrictHostKeyChecking=no root@${{ secrets.NAS_HOST }} \
"tar -xzf - -C ${{ steps.env.outputs.PROJECT_PATH }}"
- name: Setup env file
run: |
ssh -i ~/.ssh/nas_key -o StrictHostKeyChecking=no root@${{ secrets.NAS_HOST }} \
"cat > ${{ steps.env.outputs.PROJECT_PATH }}/.env << 'EOF'
SECRET_KEY=${{ secrets.APP_SECRET_KEY }}
DEBUG=false
POSTGRES_DB=auditshield
POSTGRES_USER=auditshield
POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}
DATABASE_URL=postgresql://auditshield:${{ secrets.POSTGRES_PASSWORD }}@postgres:5432/auditshield
REDIS_URL=redis://redis:6379/0
NEXT_PUBLIC_API_URL=https://auditshield.rigolet.tech
DOMAIN=auditshield.rigolet.tech
TAG=latest
EOF"
- name: Deploy
run: |
docker compose -f ${{ steps.env.outputs.COMPOSE_FILE }} pull
docker compose -f ${{ steps.env.outputs.COMPOSE_FILE }} up -d --remove-orphans
docker image prune -f
ssh -i ~/.ssh/nas_key -o StrictHostKeyChecking=no root@${{ secrets.NAS_HOST }} \
"cd ${{ steps.env.outputs.PROJECT_PATH }} && /usr/local/bin/docker compose -f ${{ steps.env.outputs.COMPOSE_FILE }} up -d --build --remove-orphans && /usr/local/bin/docker image prune -f"

View File

@@ -3,14 +3,14 @@ version: "3.8"
services:
postgres:
image: postgres:16-alpine
container_name: auditshield-db
restart: unless-stopped
container_name: auditshield-db-prod
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB:-auditshield}
POSTGRES_USER: ${POSTGRES_USER:-auditshield}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD required}
volumes:
- postgres_data:/var/lib/postgresql/data
- postgres_data_prod:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-auditshield}"]
interval: 10s
@@ -21,36 +21,35 @@ services:
redis:
image: redis:7-alpine
container_name: auditshield-redis
restart: unless-stopped
container_name: auditshield-redis-prod
restart: always
networks:
- internal
backend:
build:
context: ../backend
dockerfile: Dockerfile
container_name: auditshield-backend
restart: unless-stopped
env_file: ../.env
image: ${REGISTRY}/auditshield-backend:${TAG:-latest}
container_name: auditshield-backend-prod
restart: always
env_file: .env
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-auditshield}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-auditshield}
REDIS_URL: redis://redis:6379/0
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
networks:
- internal
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.auditshield-api.rule=Host(`${DOMAIN}`) && PathPrefix(`/api`)"
- "traefik.http.routers.auditshield-api.entrypoints=websecure"
- "traefik.http.routers.auditshield-api.tls.certresolver=letsencrypt"
frontend:
build:
context: ../frontend
dockerfile: Dockerfile
container_name: auditshield-frontend
restart: unless-stopped
image: ${REGISTRY}/auditshield-frontend:${TAG:-latest}
container_name: auditshield-frontend-prod
restart: always
environment:
NEXT_PUBLIC_API_URL: ""
depends_on:
@@ -58,9 +57,14 @@ services:
networks:
- internal
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.auditshield.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.auditshield.entrypoints=websecure"
- "traefik.http.routers.auditshield.tls.certresolver=letsencrypt"
volumes:
postgres_data:
postgres_data_prod:
networks:
internal:

5
frontend/next-env.d.ts vendored Normal file
View File

@@ -0,0 +1,5 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.

View File

@@ -1,6 +1,5 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
/** @type {import('next').NextConfig} */
const nextConfig = {
output: "standalone",
async rewrites() {
return [

7209
frontend/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -14,7 +14,6 @@
"react": "^18",
"react-dom": "^18",
"@radix-ui/react-avatar": "^1.0.4",
"@radix-ui/react-badge": "^1.0.0",
"@radix-ui/react-dialog": "^1.0.5",
"@radix-ui/react-dropdown-menu": "^2.0.6",
"@radix-ui/react-label": "^2.0.2",

0
frontend/public/.gitkeep Normal file
View File