name: Build Customised Caddy on: workflow_dispatch: inputs: caddy_version: description: 'Specify Caddy version (e.g., latest, v2.8.4)' required: true default: 'latest' caddy_plugin: description: 'Comma-separated plugin module paths, e.g. github.com/caddy-dns/cloudflare, github.com/caddyserver/nginx-adapter. Leave empty to build vanilla Caddy.' required: false jobs: build-caddy: runs-on: ubuntu-latest steps: - name: Initialise Go environment uses: actions/setup-go@v5 with: go-version: '1.22' check-latest: true - name: Install xcaddy programme run: go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest - name: Compile customised Caddy binary run: | PLUGIN_ARGS="" IFS=',' read -ra PLUGINS <<< "${{ inputs.caddy_plugin }}" for PLUGIN in "${PLUGINS[@]}"; do PLUGIN="${PLUGIN// /}" if [ -n "$PLUGIN" ]; then PLUGIN_ARGS="$PLUGIN_ARGS --with $PLUGIN" fi done xcaddy build ${{ inputs.caddy_version }} $PLUGIN_ARGS - name: Upload compiled artefact uses: actions/upload-artifact@v3 with: name: caddy-custom-linux-amd64 path: caddy