mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 00:20:04 +01:00
Now that we've fully migrated the PR CI workflow (build_and_test) to GH,
we can fully delete the workflow altogether. This will break
https://react-builds.vercel.app/ unfortunately but I'll wait for
acdlite to come back from vacation and work with him to fix it.
The remaining jobs in circleci are for publishing prereleases of React
to npm. I'll work on migrating those next.
ghstack-source-id: 05f346829f
Pull Request resolved: https://github.com/facebook/react/pull/30480
133 lines
4.8 KiB
YAML
133 lines
4.8 KiB
YAML
version: 2.1
|
|
|
|
aliases:
|
|
- &docker
|
|
- image: cimg/node:18.20.1-browsers
|
|
|
|
- &environment
|
|
TZ: /usr/share/zoneinfo/America/Los_Angeles
|
|
|
|
- &TEST_PARALLELISM 20
|
|
|
|
- &attach_workspace
|
|
at: build
|
|
|
|
commands:
|
|
setup_node_modules:
|
|
description: "Restore node_modules"
|
|
steps:
|
|
- restore_cache:
|
|
name: Restore yarn cache
|
|
keys:
|
|
- v2-yarn_cache-{{ arch }}-{{ checksum "yarn.lock" }}
|
|
- run:
|
|
name: Install dependencies
|
|
command: |
|
|
yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
|
|
if [ $? -ne 0 ]; then
|
|
yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
|
|
fi
|
|
environment:
|
|
# If we start needing the Electron binary, please ensure the binary is cached in CI following https://www.electronjs.org/docs/latest/tutorial/installation
|
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
|
- save_cache:
|
|
name: Save yarn cache
|
|
key: v2-yarn_cache-{{ arch }}-{{ checksum "yarn.lock" }}
|
|
paths:
|
|
- ~/.cache/yarn
|
|
|
|
# The CircleCI API doesn't yet support triggering a specific workflow, but it
|
|
# does support triggering a pipeline. So as a workaround you can triggger the
|
|
# entire pipeline and use parameters to disable everything except the workflow
|
|
# you want. CircleCI recommends this workaround here:
|
|
# https://support.circleci.com/hc/en-us/articles/360050351292-How-to-trigger-a-workflow-via-CircleCI-API-v2-
|
|
parameters:
|
|
# This is only set when triggering the CI pipeline via an API request.
|
|
prerelease_commit_sha:
|
|
type: string
|
|
default: ''
|
|
|
|
jobs:
|
|
publish_prerelease:
|
|
parameters:
|
|
commit_sha:
|
|
type: string
|
|
release_channel:
|
|
type: string
|
|
dist_tag:
|
|
type: string
|
|
docker: *docker
|
|
environment: *environment
|
|
steps:
|
|
- checkout
|
|
- setup_node_modules
|
|
- run:
|
|
name: Run publish script
|
|
command: |
|
|
git fetch origin main
|
|
cd ./scripts/release && yarn && cd ../../
|
|
scripts/release/prepare-release-from-ci.js --skipTests -r << parameters.release_channel >> --commit=<< parameters.commit_sha >>
|
|
cp ./scripts/release/ci-npmrc ~/.npmrc
|
|
scripts/release/publish.js --ci --tags << parameters.dist_tag >>
|
|
|
|
workflows:
|
|
# Used to publish a prerelease manually via the command line
|
|
publish_preleases:
|
|
when: << pipeline.parameters.prerelease_commit_sha >>
|
|
jobs:
|
|
- publish_prerelease:
|
|
name: Publish to Canary channel
|
|
commit_sha: << pipeline.parameters.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,rc"
|
|
- publish_prerelease:
|
|
name: Publish to Experimental channel
|
|
requires:
|
|
# 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.
|
|
- Publish to Canary channel
|
|
commit_sha: << pipeline.parameters.prerelease_commit_sha >>
|
|
release_channel: experimental
|
|
dist_tag: experimental
|
|
|
|
# Publishes on a cron schedule
|
|
publish_preleases_nightly:
|
|
unless: << pipeline.parameters.prerelease_commit_sha >>
|
|
triggers:
|
|
- schedule:
|
|
# At 10 minutes past 16:00 on Mon, Tue, Wed, Thu, and Fri
|
|
cron: "10 16 * * 1,2,3,4,5"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- main
|
|
jobs:
|
|
- publish_prerelease:
|
|
name: Publish to Canary channel
|
|
commit_sha: << pipeline.git.revision >>
|
|
release_channel: stable
|
|
dist_tag: "canary,next,rc"
|
|
- publish_prerelease:
|
|
name: Publish to Experimental channel
|
|
requires:
|
|
# 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.
|
|
- Publish to Canary channel
|
|
commit_sha: << pipeline.git.revision >>
|
|
release_channel: experimental
|
|
dist_tag: experimental
|