Skip to content

ci: replace CircleCI with GitHub Actions - #7184

Open
dhayab wants to merge 4 commits into
masterfrom
ci/github-actions-migration
Open

ci: replace CircleCI with GitHub Actions#7184
dhayab wants to merge 4 commits into
masterfrom
ci/github-actions-migration

Conversation

@dhayab

@dhayab dhayab commented Aug 20, 2026

Copy link
Copy Markdown
Member

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.yml replaces the CircleCI workflow ci. Each job name is the same as the CircleCI job name. Thus the branch-protection contexts transfer directly.
  • e2e.yml is a reusable workflow. ci.yml calls this workflow on master. e2e.yml also runs on a weekday schedule. This schedule replaces the pipeline scheduled_e2e.
  • prepare-release.yml replaces the pipeline scheduled_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_ID and FX_BOT_PRIVATE_KEY. The workflow docs-automation.yml already 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 docs and the four e2e jobs. The soft-fail option stayed off. Thus each e2e failure showed a red check.

The job release if needed does 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-libraries holds 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

  1. Change the required status checks to the new contexts. Use the command in the details section.
Branch protection command
gh api --method PATCH /repos/algolia/instantsearch/branches/master/protection/required_status_checks \
  --input - <<'EOF'
{
  "strict": false,
  "contexts": [
    "build",
    "lint",
    "unit tests",
    "test metadata",
    "legacy algoliasearch v3",
    "legacy algoliasearch v4",
    "deploy/netlify",
    "Report bundle size"
  ]
}
EOF
  1. Delete the CircleCI pipelines scheduled_release and scheduled_e2e. Then select "Stop building" in the CircleCI project.
  2. Start the workflow e2e.yml one time. This run shows that the schedule trigger and the dispatch trigger work.
  3. Start the workflow prepare-release.yml one time. Make sure that the release pull request requests a review from frontend-experiences-web. Then close the pull request and delete the staging branch. This step tests the app permission Members: read. No test of this permission is possible before the merge.
  4. Delete the secret CIRCLECI_TOKEN. No workflow uses this secret now.

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

TIP This summary will be updated as you push new changes.

@pkg-pr-new

pkg-pr-new Bot commented Aug 20, 2026

Copy link
Copy Markdown
More templates

algoliasearch-helper

npm i https://pkg.pr.new/algolia/instantsearch/algoliasearch-helper@7184

instantsearch-ui-components

npm i https://pkg.pr.new/algolia/instantsearch/instantsearch-ui-components@7184

instantsearch.css

npm i https://pkg.pr.new/algolia/instantsearch/instantsearch.css@7184

instantsearch.js

npm i https://pkg.pr.new/algolia/instantsearch/instantsearch.js@7184

react-instantsearch

npm i https://pkg.pr.new/algolia/instantsearch/react-instantsearch@7184

react-instantsearch-core

npm i https://pkg.pr.new/algolia/instantsearch/react-instantsearch-core@7184

react-instantsearch-nextjs

npm i https://pkg.pr.new/algolia/instantsearch/react-instantsearch-nextjs@7184

react-instantsearch-router-nextjs

npm i https://pkg.pr.new/algolia/instantsearch/react-instantsearch-router-nextjs@7184

vue-instantsearch

npm i https://pkg.pr.new/algolia/instantsearch/vue-instantsearch@7184

commit: bc31d66

@github-actions

github-actions Bot commented Aug 20, 2026

Copy link
Copy Markdown

Size Change: 0 B

Total Size: 1.24 MB

ℹ️ View Unchanged
Filename Size Change
packages/algolia-experiences/dist/algolia-experiences.development.js 179 kB 0 B
packages/algolia-experiences/dist/algolia-experiences.production.min.js 81.4 kB 0 B
packages/algoliasearch-helper/dist/algoliasearch.helper.js 44.3 kB 0 B
packages/algoliasearch-helper/dist/algoliasearch.helper.min.js 13.9 kB +1 B (+0.01%)
packages/instantsearch.css/components/ai-mode-button.css 1.75 kB 0 B
packages/instantsearch.css/components/autocomplete-min.css 4.31 kB 0 B
packages/instantsearch.css/components/autocomplete.css 4.66 kB 0 B
packages/instantsearch.css/components/button.css 1.96 kB 0 B
packages/instantsearch.css/components/chat-min.css 6.36 kB 0 B
packages/instantsearch.css/components/chat.css 6.83 kB 0 B
packages/instantsearch.css/components/filter-suggestions.css 1.88 kB 0 B
packages/instantsearch.css/themes/algolia-min.css 10.8 kB 0 B
packages/instantsearch.css/themes/algolia.css 11.5 kB 0 B
packages/instantsearch.css/themes/nova-min.css 10.9 kB 0 B
packages/instantsearch.css/themes/nova.css 11.6 kB 0 B
packages/instantsearch.css/themes/reset-min.css 1.3 kB 0 B
packages/instantsearch.css/themes/reset.css 1.38 kB 0 B
packages/instantsearch.css/themes/satellite-min.css 11.6 kB 0 B
packages/instantsearch.css/themes/satellite.css 12.6 kB 0 B
packages/instantsearch.js/dist/instantsearch.development.js 306 kB 0 B
packages/instantsearch.js/dist/instantsearch.production.min.js 143 kB +1 B (0%)
packages/react-instantsearch-core/dist/umd/ReactInstantSearchCore.min.js 68.8 kB 0 B
packages/react-instantsearch/dist/umd/ReactInstantSearch.min.js 114 kB 0 B
packages/vue-instantsearch/vue2/cjs/index.js 19.9 kB 0 B
packages/vue-instantsearch/vue2/umd/index.js 73.4 kB -6 B (-0.01%)
packages/vue-instantsearch/vue3/cjs/index.js 20.6 kB 0 B
packages/vue-instantsearch/vue3/umd/index.js 73.8 kB -5 B (-0.01%)

compressed-size-action

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.
@dhayab
dhayab marked this pull request as ready for review August 20, 2026 15:34
@dhayab
dhayab requested review from a team, anjola-adeuyi and shaejaz and a lite review from Copilot and removed request for a team August 20, 2026 15:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.yml workflow to replace the CircleCI ci pipeline, including the master-only release gate.
  • Added a reusable e2e.yml workflow for master-only E2E from CI plus a weekday scheduled run.
  • Added a prepare-release.yml workflow 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.

Comment thread .github/workflows/prepare-release.yml
Comment thread .github/workflows/prepare-release.yml
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment on lines +293 to +296
name: e2e
if: github.ref == 'refs/heads/master'
uses: ./.github/workflows/e2e.yml
with:

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread .github/workflows/e2e.yml
Comment thread .github/workflows/e2e.yml
Comment thread .github/workflows/e2e.yml
Comment on lines +78 to +82

- name: Download build outputs
uses: actions/download-artifact@v8
with:
name: e2e-build-outputs

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread .github/workflows/ci.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants