ci: replace CircleCI with GitHub Actions - #7184
Conversation
Up to standards ✅🟢 Issues
|
More templates
algoliasearch-helper
instantsearch-ui-components
instantsearch.css
instantsearch.js
react-instantsearch
react-instantsearch-core
react-instantsearch-nextjs
react-instantsearch-router-nextjs
vue-instantsearch
commit: |
|
Size Change: 0 B Total Size: 1.24 MB ℹ️ View Unchanged
|
Reverts b28698b. The master-only `helper docs` and `e2e` jobs were validated on the pull request and now go back to running on master only.
There was a problem hiding this comment.
Pull request overview
This pull request migrates the repository’s CI/CD automation from CircleCI to GitHub Actions by introducing equivalent workflows for CI, scheduled/manual E2E, and scheduled/manual release preparation, and removing the CircleCI configuration so only one system runs.
Changes:
- Added a GitHub Actions
ci.ymlworkflow to replace the CircleCIcipipeline, including the master-only release gate. - Added a reusable
e2e.ymlworkflow for master-only E2E from CI plus a weekday scheduled run. - Added a
prepare-release.ymlworkflow to replace the scheduled release preparation pipeline (and add a manual trigger), and deleted.circleci/config.yml.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 9 comments.
| File | Description |
|---|---|
.github/workflows/ci.yml |
New primary CI workflow replacing CircleCI’s ci pipeline and release gate. |
.github/workflows/e2e.yml |
New reusable E2E workflow for CI invocation and weekday scheduling. |
.github/workflows/prepare-release.yml |
New scheduled + manual workflow to prepare release PRs using Ship.js + GitHub App token. |
.circleci/config.yml |
Removed CircleCI pipeline configuration. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| name: e2e | ||
| if: github.ref == 'refs/heads/master' | ||
| uses: ./.github/workflows/e2e.yml | ||
| with: |
There was a problem hiding this comment.
The two build jobs run in parallel. Both start in parallel and finish at approximately the same time. So the only cost is in runner time, there's no perceived gain other than that.
I cannot move the e2e jobs into ci.yml. e2e.yml also holds the schedule trigger and the manual trigger. These triggers replace the pipeline scheduled_e2e from Circle CI.
Both jobs run yarn build:ci on the same commit and tar the same paths. Thus the two artifacts cannot differ for one commit. The extra configuration gives no speed gain, so I kept the two jobs.
|
|
||
| - name: Download build outputs | ||
| uses: actions/download-artifact@v8 | ||
| with: | ||
| name: e2e-build-outputs |
There was a problem hiding this comment.
The two actions carry independent version numbers. download-artifact sits one major above upload-artifact. GitHub publishes the pair together: upload-artifact@v7.0.0 and download-artifact@v8.0.0 both appeared on 2026-02-26, 8 seconds apart. Thus upload@v7 with download@v8 is the correct current pair. download@v7 pairs with upload@v6, so a change to v7 is a downgrade.
The round trip also works here. This pull request uploads build-outputs with v7 and downloads it in 6 jobs with v8. All jobs pass.
Summary
This pull request moves the full CircleCI pipeline to GitHub Actions. It also deletes the file
.circleci/config.yml. Thus the two systems never run at the same time.The pull request adds three workflow files:
ci.ymlreplaces the CircleCI workflowci. Each job name is the same as the CircleCI job name. Thus the branch-protection contexts transfer directly.e2e.ymlis a reusable workflow.ci.ymlcalls this workflow on master.e2e.ymlalso runs on a weekday schedule. This schedule replaces the pipelinescheduled_e2e.prepare-release.ymlreplaces the pipelinescheduled_release. This workflow also adds a manual trigger. CircleCI had no manual trigger.Both Ship.js jobs create a GitHub App token from
FX_BOT_APP_IDandFX_BOT_PRIVATE_KEY. The workflowdocs-automation.ymlalready uses this method. The old PAT is no longer available.Result
All jobs ran on this pull request. The jobs include the master-only job
helper docsand the four e2e jobs. The soft-fail option stayed off. Thus each e2e failure showed a red check.The job
release if neededdoes not run on a pull request. Therefore the release path runs for the first time after the merge.The repository now holds each secret and each variable that the workflows use. Thus the CircleCI context
fx-librariesholds no remaining data.Note
Discard failing states relevant to Circle CI, caused by the deletion of the config. After merge, we'll turn off Circle CI checks and set the new ones as required.
Do these steps immediately after the merge
Branch protection command
scheduled_releaseandscheduled_e2e. Then select "Stop building" in the CircleCI project.e2e.ymlone time. This run shows that the schedule trigger and the dispatch trigger work.prepare-release.ymlone time. Make sure that the release pull request requests a review fromfrontend-experiences-web. Then close the pull request and delete the staging branch. This step tests the app permissionMembers: read. No test of this permission is possible before the merge.CIRCLECI_TOKEN. No workflow uses this secret now.