Files
orca/.github/workflows/release-mirror-r2.yml
Neil b9e3912ff8 Call orca.dev for feedback, plugin lists and update notes; accept orca.dev share and download links (#41380)
* chore(endpoints): call orca.dev for feedback, plugin lists and update notes

The site moved to orca.dev. Feedback, connection diagnostics, plugin install
stats, the plugin kill list, update nudges and the changelog feed now use
orca.dev, as do the diagnostics token URL baked into builds and the release
download mirror (downloads.orca.dev). The old hosts serve the same paths,
so released builds keep working.

Skill share links on share.orca.dev are accepted, and the mobile scanner
recognizes the orca.dev Android download code. The old hosts stay accepted.

* chore(ci): leave the release JavaScript benchmark workflow unchanged

Editing it triggers the benchmark, whose parity check currently fails on
arm64 because max-quality brotli output for the mobile page differs by
architecture. The benchmark only needs some diagnostics URL, and the old
host still serves it.
2026-11-11 21:50:31 -08:00

65 lines
2.2 KiB
YAML

name: Release Mirror (R2)
# Copy published release downloads to the public R2 bucket behind https://downloads.orca.dev.
# orca.dev keeps GitHub as the default download and offers this as an opt-in "mirror link"
# for when GitHub release downloads return 5xx. Called by release-cut (stable desktop tags) and
# mobile-android-release after publishing; dispatch manually to backfill a tag.
on:
workflow_call:
inputs:
tag:
description: Published release tag to mirror (e.g. v1.4.254 or mobile-android-v0.0.64)
required: true
type: string
assets:
description: Space-separated asset names (blank = the orca.dev download assets)
required: false
default: ''
type: string
workflow_dispatch:
inputs:
tag:
description: Published release tag to mirror (e.g. v1.4.254 or mobile-android-v0.0.64)
required: true
type: string
assets:
description: Space-separated asset names (blank = the orca.dev download assets)
required: false
default: ''
type: string
# Why: two releases landing close together must not interleave writes to latest/.
concurrency:
group: release-mirror-r2
cancel-in-progress: false
jobs:
mirror:
runs-on: ubuntu-latest
timeout-minutes: 60
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mirror release assets
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
TAG: ${{ inputs.tag }}
ASSETS: ${{ inputs.assets }}
# R2 S3 API keys with Object Read & Write on the orca-downloads bucket.
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
WORK_DIR: ${{ runner.temp }}/release-mirror
run: |
set -euo pipefail
if [[ -z "$R2_ACCESS_KEY_ID" || -z "$R2_SECRET_ACCESS_KEY" ]]; then
echo "::error::Set the R2_ACCESS_KEY_ID and R2_SECRET_ACCESS_KEY secrets to mirror releases to R2."
exit 1
fi
read -r -a assets <<<"$ASSETS"
config/scripts/release/publication/mirror-release-to-r2.sh "$TAG" "${assets[@]}"