Files
dependabot[bot] 773f1bfe21 build(deps): bump actions/setup-node from 6 to 7 (#5046)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 09:00:49 +08:00

106 lines
3.2 KiB
YAML

name: 📡 Publish OTA Release
on:
workflow_dispatch:
inputs:
release_version:
type: string
required: true
description: "Release version without the v prefix"
runtime_version:
type: string
required: true
description: "Expo runtime version for the OTA bundle"
channel:
type: choice
required: true
options:
- production
- preview
description: "OTA channel embedded in ota-release.json"
permissions:
contents: write
jobs:
publish:
if: github.secret_source != 'None'
runs-on: ubuntu-latest
env:
OTA_PRODUCT: mobile
OTA_RELEASE_VERSION: ${{ inputs.release_version }}
OTA_RUNTIME_VERSION: ${{ inputs.runtime_version }}
OTA_CHANNEL: ${{ inputs.channel }}
OTA_GIT_TAG: mobile/v${{ inputs.release_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Preserve workflow helper scripts
run: |
mkdir -p "$RUNNER_TEMP/folo-release-scripts"
cp .github/scripts/trigger-ota-sync.mjs "$RUNNER_TEMP/folo-release-scripts/trigger-ota-sync.mjs"
- name: Resolve target release tag
run: |
git fetch --tags --force
if ! git rev-parse --verify "refs/tags/${OTA_GIT_TAG}" >/dev/null 2>&1; then
echo "::error::Required release tag ${OTA_GIT_TAG} does not exist. Create it before publishing OTA assets."
exit 1
fi
git checkout --detach "refs/tags/${OTA_GIT_TAG}"
echo "Checked out ${OTA_GIT_TAG} at $(git rev-list -n 1 "refs/tags/${OTA_GIT_TAG}")"
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Setup Node.js
uses: actions/setup-node@v7
with:
node-version: 22
cache: "pnpm"
- name: Install dependencies
run: pnpm install --frozen-lockfile --child-concurrency=1
- name: Export OTA bundle assets
working-directory: apps/mobile
run: pnpm run update:export
- name: Build OTA release bundle
run: node .github/scripts/build-ota-release.mjs
- name: Publish GitHub release assets
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
tag_name="mobile/v${OTA_RELEASE_VERSION}"
release_title="Mobile v${OTA_RELEASE_VERSION}"
ota_files=("apps/mobile/dist/ota-release.json")
if [ -f "apps/mobile/dist.tar.zst" ]; then
ota_files+=("apps/mobile/dist.tar.zst")
fi
if gh release view "$tag_name" >/dev/null 2>&1; then
gh release upload "$tag_name" "${ota_files[@]}" --clobber
else
gh release create "$tag_name" "${ota_files[@]}" \
--verify-tag \
--title "$release_title" \
--notes "OTA release assets for the ${OTA_CHANNEL} channel."
fi
- name: Trigger OTA sync
env:
OTA_BASE_URL: ${{ secrets.OTA_BASE_URL }}
OTA_SYNC_TOKEN: ${{ secrets.OTA_SYNC_TOKEN }}
OTA_SYNC_TOKEN_HEADER: ${{ secrets.OTA_SYNC_TOKEN_HEADER }}
OTA_SYNC_TIMEOUT_MS: 120000
run: node "$RUNNER_TEMP/folo-release-scripts/trigger-ota-sync.mjs"