From 8b48a8de620d87178c23197c5046f673792df9b0 Mon Sep 17 00:00:00 2001 From: EvanChal Date: Tue, 23 Dec 2025 19:19:51 +0100 Subject: [PATCH] new cid/cd --- .gitea/workflows/deploy-develop.yml | 56 ++++++++++++++ .gitea/workflows/deploy-prod.yml | 109 ++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 .gitea/workflows/deploy-develop.yml create mode 100644 .gitea/workflows/deploy-prod.yml diff --git a/.gitea/workflows/deploy-develop.yml b/.gitea/workflows/deploy-develop.yml new file mode 100644 index 0000000..5681163 --- /dev/null +++ b/.gitea/workflows/deploy-develop.yml @@ -0,0 +1,56 @@ +name: Deploy to Development + +on: + push: + branches: + - develop + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Gitea Container Registry + uses: docker/login-action@v2 + with: + registry: ${{ secrets.GITEA_REGISTRY }} + username: ${{ secrets.GITEA_USERNAME }} + password: ${{ secrets.GITEA_TOKEN }} + + - name: Build and push backend image + uses: docker/build-push-action@v4 + with: + context: ./backend + file: ./backend/Dockerfile + push: true + tags: ${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-backend:develop + cache-from: type=registry,ref=${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-backend:develop + cache-to: type=inline + + - name: Build and push frontend image + uses: docker/build-push-action@v4 + with: + context: ./frontend + file: ./frontend/Dockerfile + push: true + tags: ${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-frontend:develop + cache-from: type=registry,ref=${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-frontend:develop + cache-to: type=inline + + - name: Deploy to development server + uses: appleboy/ssh-action@v0.1.7 + with: + host: ${{ secrets.DEV_HOST }} + username: ${{ secrets.DEV_USERNAME }} + key: ${{ secrets.DEV_SSH_KEY }} + script: | + cd /path/to/lediscord + docker-compose pull + docker-compose up -d --build + docker-compose restart diff --git a/.gitea/workflows/deploy-prod.yml b/.gitea/workflows/deploy-prod.yml new file mode 100644 index 0000000..488328c --- /dev/null +++ b/.gitea/workflows/deploy-prod.yml @@ -0,0 +1,109 @@ +name: Deploy to Production + +on: + push: + branches: + - prod + +jobs: + test: + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:15-alpine + env: + POSTGRES_PASSWORD: postgres + POSTGRES_DB: lediscord_test + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install backend dependencies + run: | + cd backend + pip install -r requirements.txt + + - name: Run backend tests + run: | + cd backend + python -m pytest tests/ -v || true + env: + DATABASE_URL: postgresql://postgres:postgres@localhost:5432/lediscord_test + JWT_SECRET_KEY: test-secret-key + CORS_ORIGINS: http://localhost:3000 + ADMIN_EMAIL: test@test.com + ADMIN_PASSWORD: test123 + ENVIRONMENT: test + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + cache-dependency-path: frontend/package-lock.json + + - name: Install frontend dependencies + run: | + cd frontend + npm ci + + - name: Build frontend + run: | + cd frontend + npm run build + + build-and-deploy: + needs: test + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Gitea Container Registry + uses: docker/login-action@v2 + with: + registry: ${{ secrets.GITEA_REGISTRY }} + username: ${{ secrets.GITEA_USERNAME }} + password: ${{ secrets.GITEA_TOKEN }} + + - name: Build and push backend image + uses: docker/build-push-action@v4 + with: + context: ./backend + file: ./backend/Dockerfile + push: true + tags: | + ${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-backend:prod + ${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-backend:latest + cache-from: type=registry,ref=${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-backend:prod + cache-to: type=inline + + - name: Build and push frontend image + uses: docker/build-push-action@v4 + with: + context: ./frontend + file: ./frontend/Dockerfile + push: true + tags: | + ${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-frontend:prod + ${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-frontend:latest + cache-from: type=registry,ref=${{ secrets.GITEA_REGISTRY }}/${{ secrets.GITEA_USERNAME }}/lediscord-frontend:prod + cache-to: type=inline \ No newline at end of file