name: Deploy Caddy on: push: branches: [main] pull_request: branches: [main] jobs: validate: runs-on: vps-runner steps: - uses: actions/checkout@v3 - name: Install Caddy run: | sudo apt update sudo apt install -y caddy - name: Validate Caddyfile run: caddy validate --config Caddyfile deploy: needs: validate if: github.event_name == 'push' runs-on: self-hosted steps: - uses: actions/checkout@v3 - name: Backup current config run: | sudo cp /etc/caddy/Caddyfile /etc/caddy/Caddyfile.backup sudo cp -r /etc/caddy/conf.d /etc/caddy/conf.d.backup - name: Deploy configs run: | sudo cp Caddyfile /etc/caddy/ sudo cp -r conf.d/* /etc/caddy/conf.d/ sudo cp ssl/*.pem /etc/caddy/ssl/ || true - name: Validate deployed config run: sudo caddy validate --config /etc/caddy/Caddyfile - name: Reload Caddy run: sudo systemctl reload caddy - name: Check Caddy status run: sudo systemctl status caddy --no-pager