static-site-deploy/action.yml

51 lines
1.7 KiB
YAML
Raw Normal View History

---
name: Deploy static site to Bunny
description: Safely synchronize a completed static website build to Bunny Storage.
inputs:
directory:
description: Directory containing the completed static build and index.html.
required: true
storage-zone:
description: Bunny Storage Zone name.
required: true
storage-endpoint:
description: Regional Bunny Storage API hostname.
required: false
default: storage.bunnycdn.com
purge-endpoint:
description: Optional trusted Gandalf deployment gateway base URL.
required: false
default: ""
dry-run:
description: Report changes without uploading or deleting files.
required: false
default: "false"
workers:
description: Maximum concurrent Bunny Storage transfers.
required: false
default: "16"
runs:
using: composite
steps:
- name: Synchronize static build
shell: bash
env:
STATIC_SITE_DIRECTORY: ${{ inputs.directory }}
BUNNY_STORAGE_ZONE: ${{ inputs.storage-zone }}
BUNNY_STORAGE_ENDPOINT: ${{ inputs.storage-endpoint }}
BUNNY_PURGE_ENDPOINT: ${{ inputs.purge-endpoint }}
STATIC_SITE_REVISION: ${{ github.sha }}
STATIC_SITE_DRY_RUN: ${{ inputs.dry-run }}
STATIC_SITE_WORKERS: ${{ inputs.workers }}
run: |
set -euo pipefail
args=(bunny "$STATIC_SITE_DIRECTORY" --workers "$STATIC_SITE_WORKERS")
if [[ "$STATIC_SITE_DRY_RUN" == "true" ]]; then
args+=(--dry-run)
elif [[ "$STATIC_SITE_DRY_RUN" != "false" ]]; then
echo "dry-run must be true or false" >&2
exit 2
fi
python3 "$FORGEJO_ACTION_PATH/static_site.py" "${args[@]}"