This commit is contained in:
		@@ -1,61 +1,82 @@
 | 
			
		||||
# .gitea/workflows/publish.yml
 | 
			
		||||
name: Publish Website
 | 
			
		||||
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
 | 
			
		||||
 | 
			
		||||
on: 
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches: [ main ] 
 | 
			
		||||
    branches: [ main ]          # <- typo fixed (“braches” → “branches”)
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  publish:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      # Step 0: Detect Docker host IP (works inside containers)
 | 
			
		||||
      - name: Detect Gitea host IP
 | 
			
		||||
        id: host_ip
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      # 0. Detect the host‑side IP that Docker containers use
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      - name: Detect Gitea host IP (inside runner)
 | 
			
		||||
        id: detect_host
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          HOST_IP=$(ip route | grep default | awk '{print $3}')
 | 
			
		||||
          echo "GITEA_HOST=$HOST_IP" >> $GITHUB_ENV
 | 
			
		||||
          echo "Detected Gitea host IP: $HOST_IP"
 | 
			
		||||
          HOST_IP=$(ip route | awk '/default/ {print $3}')
 | 
			
		||||
          echo "GITEA_HOST=$HOST_IP" >> "$GITHUB_ENV"
 | 
			
		||||
          echo "Detected host IP: $HOST_IP"
 | 
			
		||||
 | 
			
		||||
      # Clone the website repo over HTTPS
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      # 1. Checkout the website repository (your app code)
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      - name: Checkout website repo
 | 
			
		||||
        run: git clone https://code.akshaykolli.net/lepton/website .
 | 
			
		||||
        uses: actions/checkout@v4                    # avoids manual clone
 | 
			
		||||
        with:
 | 
			
		||||
          repository: lepton/website                 # full owner/repo path
 | 
			
		||||
          fetch-depth: 1
 | 
			
		||||
 | 
			
		||||
      # Setup SSH agent with secret key
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      # 2. Start an SSH agent and load the private key from secrets
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      - name: Set up SSH agent
 | 
			
		||||
        env:
 | 
			
		||||
          SSH_KEY: ${{ secrets.ACCESS_KEY }}
 | 
			
		||||
          SSH_KEY: ${{ secrets.ACCESS_KEY }}         # your private key
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          eval "$(ssh-agent -s)"
 | 
			
		||||
          echo "$SSH_KEY" | tr -d '\r' | ssh-add -
 | 
			
		||||
          echo "$SSH_KEY" | tr -d '\r' | ssh-add - >/dev/null
 | 
			
		||||
          ssh-add -l
 | 
			
		||||
 | 
			
		||||
      # Trust Gitea host's SSH key
 | 
			
		||||
      - name: Trust Gitea host
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      # 3. Trust the Gitea host key (port 222)
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      - name: Trust Gitea host key
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir -p ~/.ssh
 | 
			
		||||
          ssh-keyscan -H -p 222 $GITEA_HOST 2>/dev/null >> ~/.ssh/known_hosts
 | 
			
		||||
          ssh-keyscan -H -p 222 "$GITEA_HOST" 2>/dev/null >> ~/.ssh/known_hosts
 | 
			
		||||
 | 
			
		||||
      # Optional: Debug SSH connection
 | 
			
		||||
      - name: Check if Gitea SSH is alive
 | 
			
		||||
        run: ssh -p 222 git@$GITEA_HOST || echo "Warning: SSH connection failed but continuing..."
 | 
			
		||||
 | 
			
		||||
      # Clone template repo via SSH
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      # 4. Clone the template repo via SSH (uses detected IP + port 222)
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      - name: Clone template repo
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          git clone --depth 1 ssh://git@$GITEA_HOST:222/lepton/app_templates /tmp/template
 | 
			
		||||
          git clone --depth 1 \
 | 
			
		||||
            "ssh://git@$GITEA_HOST:222/lepton/app_templates" /tmp/template
 | 
			
		||||
 | 
			
		||||
      # Copy Docker configuration files
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      # 5. Copy Docker artefacts into workspace root
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      - name: Copy Docker configuration
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          cp /tmp/template/web/docker-compose.yml .
 | 
			
		||||
          cp /tmp/template/web/Dockerfile .
 | 
			
		||||
          cp /tmp/template/web/Dockerfile          .
 | 
			
		||||
 | 
			
		||||
      # Tear down any old deployment
 | 
			
		||||
      - name: Stop existing stack
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      # 6. Stop any old stack, rebuild, and run the new one
 | 
			
		||||
      # ------------------------------------------------------------
 | 
			
		||||
      - name: Stop existing stack (ignore if none)
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: docker compose down --remove-orphans || true
 | 
			
		||||
 | 
			
		||||
      # Rebuild and start fresh
 | 
			
		||||
      - name: Rebuild and deploy
 | 
			
		||||
      - name: Rebuild & deploy
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: docker compose up -d --build
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user