Skip to content

Migrate CI from CircleCI to GitHub Actions#1113

Merged
khamilowicz merged 9 commits into
masterfrom
migrate-to-github-actions
May 14, 2026
Merged

Migrate CI from CircleCI to GitHub Actions#1113
khamilowicz merged 9 commits into
masterfrom
migrate-to-github-actions

Conversation

@khamilowicz
Copy link
Copy Markdown
Contributor

@khamilowicz khamilowicz commented Apr 13, 2026

Replace the CircleCI elixir orb with reusable workflows from
membraneframework/membrane_actions.

Changes

  • Remove .circleci/config.yml
  • Add .github/workflows/ci.yml with build_test, test, and lint jobs
  • Add .github/workflows/release.yml with the same jobs plus hex_publish
  • Add .github/workflows/performance.yml for benchmark comparisons

CI runs on every push and can be manually triggered via workflow_dispatch
(used for PRs from outside the organization). Hex publish triggers on v*
tags using the HEX_API_KEY secret.

Submodules are checked out recursively to support the guides/membrane_tutorials
and guides/membrane_demo submodules. Tests run with --include long_running
across 4 parallel shards.

Also includes a fix for demo path resolve logic — when demo_dir is ., the
sparse-checkout path was incorrectly constructed as ./demo_name instead of
just demo_name, causing sparse-checkout to fail for demos located at the
repo root.

Performance test

The performance workflow replaces the CircleCI manual approval gate with
workflow_dispatch — trigger it manually from the Actions tab on the branch
you want to benchmark. It compares benchmark results between the feature branch
and master using Docker.

Since this is a public repository, GitHub by default does not spin self-hosted runners. It has to be explicitly allowed in settings.

Omissions

  • Parallel test splitting by timings — the original config used CircleCI's
    timing-based test splitting. Tests are now split by round-robin file distribution
    across 4 shards.

@khamilowicz khamilowicz added the no-changelog This label has to be added if changes from the PR are not meant to be placed in the CHANGELOG.md label Apr 13, 2026
@khamilowicz khamilowicz marked this pull request as ready for review April 13, 2026 16:17
@khamilowicz khamilowicz requested a review from mat-hek as a code owner April 13, 2026 16:17
@mat-hek mat-hek requested a review from varsill April 14, 2026 08:58
@khamilowicz khamilowicz force-pushed the migrate-to-github-actions branch from e32f172 to 015d5a9 Compare April 21, 2026 08:21
@FelonEkonom
Copy link
Copy Markdown
Member

The version on master is now 1.3.0, so this PR should bump it to 1.3.1

khamilowicz and others added 8 commits May 8, 2026 09:55
Replace CircleCI elixir orb with membraneframework/membrane_actions
reusable workflows. Submodules checked out recursively. Tests run with
--include long_running matching original config. Performance test
migrated to workflow_dispatch with Docker benchmark steps preserved.
Hex publish on v* tags using HEX_API_KEY secret.
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@khamilowicz khamilowicz force-pushed the migrate-to-github-actions branch from 3c6f7b2 to a0bcbef Compare May 8, 2026 08:08
@khamilowicz
Copy link
Copy Markdown
Contributor Author

@FelonEkonom I also added the GitHub release job, we'll see if the result is satisfactory.

@khamilowicz khamilowicz merged commit a91e82c into master May 14, 2026
8 of 9 checks passed
@khamilowicz khamilowicz deleted the migrate-to-github-actions branch May 14, 2026 11:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog This label has to be added if changes from the PR are not meant to be placed in the CHANGELOG.md

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants