20 Commits

Author SHA1 Message Date
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
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
a0004796ed Merge pull request 'feature/phase-1-socle' (#1) from feature/phase-1-socle into dev
Some checks failed
Deploy / deploy (push) Failing after 8s
Reviewed-on: #1
2026-03-21 16:25:39 +00:00
3 changed files with 57 additions and 33 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

@@ -24,18 +24,38 @@ jobs:
echo "PROJECT_PATH=/volume1/docker/auditshield-dev" >> $GITHUB_OUTPUT
fi
- name: Deploy to NAS
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.NAS_HOST }}
username: ${{ secrets.NAS_USER }}
key: ${{ secrets.NAS_SSH_KEY }}
script: |
mkdir -p ${{ steps.env.outputs.PROJECT_PATH }}
cd ${{ steps.env.outputs.PROJECT_PATH }}
git clone https://gitea.rigolet.tech/vincent/auditshield.git . 2>/dev/null || git pull
cp .env.example .env 2>/dev/null || true
sudo docker compose -f ${{ steps.env.outputs.COMPOSE_FILE }} up -d --build --remove-orphans
sudo docker image prune -f
- 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: |
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: