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