Add Caddy Config Workflow

setup.ymlYAML

setup.yml

name: Update Caddy Configuration

on:
  push:
    branches:
      - main
    paths:
      - "development/caddyfile.txt"
      - "production/caddyfile.txt"

jobs:
  deploy-development:
    if: github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup SSH for Development
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
          SSH_HOST: ${{ secrets.DEV_SSH_HOST }}
        run: |
          mkdir -p ~/.ssh
          echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          ssh-keyscan -H $SSH_HOST >> ~/.ssh/known_hosts
          chmod 644 ~/.ssh/known_hosts

      - name: Upload and reload Caddy configuration (Development)
        env:
          SSH_HOST: ${{ secrets.DEV_SSH_HOST }}
        run: |
          scp -i ~/.ssh/id_rsa development/caddyfile.txt ubuntu@$SSH_HOST:~/caddyfile_temp
          ssh -i ~/.ssh/id_rsa ubuntu@$SSH_HOST 'sudo mv ~/caddyfile_temp /etc/caddy/Caddyfile && sudo systemctl reload caddy || { echo "Caddy reload failed"; exit 1; }'

  deploy-production:
    if: github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup SSH for Production
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
          SSH_HOST: ${{ secrets.PROD_SSH_HOST }}
        run: |
          mkdir -p ~/.ssh
          echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          ssh-keyscan -H $SSH_HOST >> ~/.ssh/known_hosts
          chmod 644 ~/.ssh/known_hosts

      - name: Upload and reload Caddy configuration (Production)
        env:
          SSH_HOST: ${{ secrets.PROD_SSH_HOST }}
        run: |
          scp -i ~/.ssh/id_rsa production/caddyfile.txt ubuntu@$SSH_HOST:~/caddyfile_temp
          ssh -i ~/.ssh/id_rsa ubuntu@$SSH_HOST 'sudo mv ~/caddyfile_temp /etc/caddy/Caddyfile && sudo systemctl reload caddy || { echo "Caddy reload failed"; exit 1; }'
Updated: 12/25/2024