name: Testing Site CD
on:
  push:
    branches:
      - main

jobs:
  deploy-testing-cd:
    name: Update Development
    runs-on: ubuntu-latest
    container:
      volumes:
        - /var/www/html/milsim-site-v4-dev:/var/www/html/milsim-site-v4:z
    steps:
      - name: Setup Local Environment
        run: |
          groupadd -g 989 nginx || true
          useradd nginx -u 990 -g nginx -m || true

      - name: Update Node Environment
        uses: actions/setup-node@v6
        with:
          node-version: 20.19

      - name: Verify Local Environment
        run: |
          which npm
          npm -v
          which node
          node -v
          which sed
          sed --version

      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0
          ref: 'main'

      - name: Token Copy
        run: |
          cd /var/www/html/milsim-site-v4
          cp ${{ gitea.workspace }}/.git/config .git/config
          chown nginx:nginx .git/config

      - name: Update Application Code
        run: |
          cd /var/www/html/milsim-site-v4
          version=`git log -1 --format=%H`
          echo "Current Revision: $version"
          echo "Updating to: ${{ github.sha }}"
          sudo -u nginx git reset --hard
          sudo -u nginx git fetch --tags
          sudo -u nginx git pull origin main
          new_version=`git log -1 --format=%H`
          echo "Successfully updated to: $new_version"

      - name: Update Shared Dependencies and Fix Permissions
        run: |
          cd /var/www/html/milsim-site-v4/shared
          npm install
          chown -R nginx:nginx .

      - name: Update UI Dependencies and Fix Permissions
        run: |
          cd /var/www/html/milsim-site-v4/ui
          npm install
          chown -R nginx:nginx .

      - name: Update API Dependencies and Fix Permissions
        run: |
          cd /var/www/html/milsim-site-v4/api
          npm install
          chown -R nginx:nginx .

      - name: Build UI / Update Version / Fix Permissions
        run: |
          cd /var/www/html/milsim-site-v4/ui
          npm run build
          version=`git rev-parse --short=10 HEAD`
          sed -i "s/VITE_APPLICATION_VERSION=.*/VITE_APPLICATION_VERSION=$version/" .env
          chown -R nginx:nginx .

      - name: Build API / Update Version / Fix Permissions
        run: |
          cd /var/www/html/milsim-site-v4/api
          npm run build
          version=`git rev-parse --short=10 HEAD`
          sed -i "s/APPLICATION_VERSION=.*/APPLICATION_VERSION=$version/" .env
          chown -R nginx:nginx .

      - name: Run Database Migrations
        run: |
          cd /var/www/html/milsim-site-v4/api
          sudo -u nginx npx db-migrate up -e prod

      - name: Reset File Permissions
        run: |
          sudo chown -R nginx:nginx /var/www/html/milsim-site-v4
          sudo chmod -R u+w /var/www/html/milsim-site-v4