ci: add Gitea Actions workflow and docker-compose.prod.yml for NAS deployment
Build & Deploy / build (push) Has been cancelled
Build & Deploy / docker (push) Has been cancelled

This commit is contained in:
L HEREEC Kevin INNOV/PTFM committed 2026-07-13 11:17:44 +02:00
1 parent 228d382cbf
commit 9f230ffcc9
2 files changed
+122

No files matched your search

+70
View File
@@ -0,0 +1,70 @@
name: Build & Deploy
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
jobs:
build:
runs-on: linux
container: node:24-alpine
steps:
- name: Checkout repository
run: git clone --depth=1 http://x-access-token:${{ github.token }}@192.168.1.39:3000/${{ github.repository }}.git .
- name: Install dependencies
run: npm ci
- name: Run build
run: node ace build
docker:
needs: build
runs-on: dind
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
steps:
- name: Checkout repository
run: git clone --depth=1 http://x-access-token:${{ github.token }}@192.168.1.39:3000/${{ github.repository }}.git .
- name: Login to Gitea Container Registry
run: |
echo "${{ secrets.GITEA_TOKEN }}" | docker login http://192.168.1.39:3000 -u "${{ secrets.GITEA_USERNAME }}" --password-stdin
- name: Build and push Docker image
run: |
IMAGE=192.168.1.39:3000/$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')
docker build -t ${IMAGE}:latest -t ${IMAGE}:${{ github.sha }} .
docker push ${IMAGE}:latest
docker push ${IMAGE}:${{ github.sha }}
- name: Deploy on NAS
run: |
apk add --no-cache openssh-client sshpass
# Copier docker-compose.prod.yml sur le NAS
cat docker-compose.prod.yml | sshpass -p "${{ secrets.NASPASS }}" ssh -o StrictHostKeyChecking=no Stude12@192.168.1.39 \
"mkdir -p /volume1/docker/adam-acs && cat > /volume1/docker/adam-acs/docker-compose.prod.yml"
# Créer le fichier .env sur le NAS à partir des secrets
sshpass -p "${{ secrets.NASPASS }}" ssh -o StrictHostKeyChecking=no Stude12@192.168.1.39 "cat > /volume1/docker/adam-acs/.env" <<EOF
APP_KEY=${{ secrets.APP_KEY }}
APP_URL=${{ secrets.APP_URL }}
MONGO_USER=${{ secrets.MONGO_USER }}
MONGO_PASSWORD=${{ secrets.MONGO_PASSWORD }}
APP_PORT=${{ secrets.APP_PORT }}
LOG_LEVEL=info
HASH_KEY=${{ secrets.HASH_KEY }}
WEBUI_USERNAME=${{ secrets.WEBUI_USERNAME }}
WEBUI_PASSWORD=${{ secrets.WEBUI_PASSWORD }}
API_KEY=${{ secrets.API_KEY }}
EOF
# Déployer avec docker compose
sshpass -p "${{ secrets.NASPASS }}" ssh -o StrictHostKeyChecking=no Stude12@192.168.1.39 "
cd /volume1/docker/adam-acs &&
echo '${{ secrets.NASPASS }}' | sudo -S /usr/bin/docker login http://192.168.1.39:3000 -u '${{ secrets.GITEA_USERNAME }}' -p '${{ secrets.GITEA_TOKEN }}' &&
echo '${{ secrets.NASPASS }}' | sudo -S /usr/bin/docker compose -f docker-compose.prod.yml pull &&
echo '${{ secrets.NASPASS }}' | sudo -S /usr/bin/docker compose -f docker-compose.prod.yml up -d --remove-orphans
"
+52
View File
@@ -0,0 +1,52 @@
services:
mongodb:
image: mongo:7
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER:-adam}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
MONGO_INITDB_DATABASE: adam-acs
volumes:
- mongo_data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 5
app:
image: 192.168.1.39:3000/stude12/adam-acs:latest
restart: unless-stopped
ports:
- "${APP_PORT:-8080}:8080"
environment:
NODE_ENV: production
PORT: 8080
HOST: 0.0.0.0
MONGODB_URI: mongodb://${MONGO_USER:-adam}:${MONGO_PASSWORD}@mongodb:27017/adam-acs?authSource=admin
MONGODB_DB_NAME: adam-acs
APP_KEY: ${APP_KEY}
APP_URL: ${APP_URL:-http://localhost:8080}
SESSION_DRIVER: cookie
LOG_LEVEL: ${LOG_LEVEL:-info}
HASH_KEY: ${HASH_KEY}
WEBUI_USERNAME: ${WEBUI_USERNAME:-Admin}
WEBUI_PASSWORD: ${WEBUI_PASSWORD}
API_KEY: ${API_KEY}
depends_on:
mongodb:
condition: service_healthy
volumes:
- app_tr069_data:/app/data
- app_tr069_logs:/app/logs/tr069
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://localhost:8080/api/v1/checklife').then(r=>{process.exit(r.ok?0:1)}).catch(()=>process.exit(1))"]
interval: 10s
timeout: 5s
retries: 10
start_period: 15s
volumes:
mongo_data:
app_tr069_data:
app_tr069_logs: