All checks were successful
Test / test (push) Successful in 9s
Without BUNNY_STORAGE_PASSWORD, the action now requests the running workflow's OIDC identity token (Forgejo with enable-openid-connect, GitHub with id-token: write) for the gateway's audience and starts the deployment with it. It takes the Storage Zone password from the gateway's answer, masks it in the log, plans and uploads with it, and finalizes or aborts with a fresh token. A dry run in this mode stays local. Password deployments work as before. action.yml finds its script under FORGEJO_ACTION_PATH or GITHUB_ACTION_PATH, so the action also runs on GitHub Actions.
60 lines
2.1 KiB
YAML
60 lines
2.1 KiB
YAML
---
|
|
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: ""
|
|
edge-rules:
|
|
description: >-
|
|
Optional TOML file with [[edge_rules]] (redirects, status codes, headers,
|
|
cache times) for the site's Pull Zones. Needs purge-endpoint. Through the
|
|
gateway, leaving it empty removes rules from earlier deployments.
|
|
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 }}
|
|
STATIC_SITE_EDGE_RULES: ${{ inputs.edge-rules }}
|
|
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
|
|
# Forgejo and GitHub name the action's checkout differently.
|
|
python3 "${FORGEJO_ACTION_PATH:-$GITHUB_ACTION_PATH}/static_site.py" "${args[@]}"
|