mirror of
https://github.com/zebrajr/react.git
synced 2026-01-15 12:15:22 +00:00
Previously the experimental workflow relied on the canary one running first to avoid race conditions. However, I didn't account for the fact that the canary one can now be skipped.
103 lines
3.8 KiB
YAML
103 lines
3.8 KiB
YAML
name: (Runtime) Publish Prereleases Manual
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
prerelease_commit_sha:
|
|
required: true
|
|
only_packages:
|
|
description: Packages to publish (space separated)
|
|
type: string
|
|
skip_packages:
|
|
description: Packages to NOT publish (space separated)
|
|
type: string
|
|
dry:
|
|
required: true
|
|
description: Dry run instead of publish?
|
|
type: boolean
|
|
default: true
|
|
experimental_only:
|
|
type: boolean
|
|
description: Only publish to the experimental tag
|
|
default: false
|
|
force_notify:
|
|
description: Force a Discord notification?
|
|
type: boolean
|
|
default: false
|
|
|
|
permissions: {}
|
|
|
|
env:
|
|
TZ: /usr/share/zoneinfo/America/Los_Angeles
|
|
|
|
jobs:
|
|
notify:
|
|
if: ${{ inputs.force_notify || inputs.dry == false || inputs.dry == 'false' }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Discord Webhook Action
|
|
uses: tsickert/discord-webhook@86dc739f3f165f16dadc5666051c367efa1692f4
|
|
with:
|
|
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
|
embed-author-name: ${{ github.event.sender.login }}
|
|
embed-author-url: ${{ github.event.sender.html_url }}
|
|
embed-author-icon-url: ${{ github.event.sender.avatar_url }}
|
|
embed-title: "⚠️ Publishing ${{ inputs.experimental_only && 'EXPERIMENTAL' || 'CANARY & EXPERIMENTAL' }} release ${{ (inputs.dry && ' (dry run)') || '' }}"
|
|
embed-description: |
|
|
```json
|
|
${{ toJson(inputs) }}
|
|
```
|
|
embed-url: https://github.com/facebook/react/actions/runs/${{ github.run_id }}
|
|
|
|
publish_prerelease_canary:
|
|
if: ${{ !inputs.experimental_only }}
|
|
name: Publish to Canary channel
|
|
uses: facebook/react/.github/workflows/runtime_prereleases.yml@main
|
|
permissions:
|
|
# We use github.token to download the build artifact from a previous runtime_build_and_test.yml run
|
|
actions: read
|
|
with:
|
|
commit_sha: ${{ inputs.prerelease_commit_sha }}
|
|
release_channel: stable
|
|
# The tags to use when publishing canaries. The main one we should
|
|
# always include is "canary" but we can use multiple (e.g. alpha,
|
|
# beta, rc). To declare multiple, use a comma-separated string, like
|
|
# this:
|
|
# dist_tag: "canary,alpha,beta,rc"
|
|
#
|
|
# TODO: We currently tag canaries with "next" in addition to "canary"
|
|
# because this used to be called the "next" channel and some
|
|
# downstream consumers might still expect that tag. We can remove this
|
|
# after some time has elapsed and the change has been communicated.
|
|
dist_tag: canary,next
|
|
only_packages: ${{ inputs.only_packages }}
|
|
skip_packages: ${{ inputs.skip_packages }}
|
|
dry: ${{ inputs.dry }}
|
|
secrets:
|
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
publish_prerelease_experimental:
|
|
name: Publish to Experimental channel
|
|
uses: facebook/react/.github/workflows/runtime_prereleases.yml@main
|
|
permissions:
|
|
# We use github.token to download the build artifact from a previous runtime_build_and_test.yml run
|
|
actions: read
|
|
# NOTE: Intentionally running these jobs sequentially because npm
|
|
# will sometimes fail if you try to concurrently publish two
|
|
# different versions of the same package, even if they use different
|
|
# dist tags.
|
|
needs: publish_prerelease_canary
|
|
# Ensures the job runs even if canary is skipped
|
|
if: always()
|
|
with:
|
|
commit_sha: ${{ inputs.prerelease_commit_sha }}
|
|
release_channel: experimental
|
|
dist_tag: experimental
|
|
only_packages: ${{ inputs.only_packages }}
|
|
skip_packages: ${{ inputs.skip_packages }}
|
|
dry: ${{ inputs.dry }}
|
|
secrets:
|
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|