From 03c05b544e0be0c1976d6b2cffca96a62d9fa970 Mon Sep 17 00:00:00 2001 From: Piotr Szeremeta Date: Thu, 9 Apr 2026 15:11:24 +0200 Subject: [PATCH 1/4] Migrate CI from CircleCI to GitHub Actions Replace CircleCI elixir orb with membraneframework-labs/membrane-actions reusable workflows. CI runs on push and can be manually triggered via workflow_dispatch. Hex publish on v* tags using HEX_API_KEY secret. --- .circleci/config.yml | 30 ------------------------------ .github/workflows/ci.yml | 16 ++++++++++++++++ .github/workflows/release.yml | 23 +++++++++++++++++++++++ 3 files changed, 39 insertions(+), 30 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index c077fb4..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: 2.1 -orbs: - elixir: membraneframework/elixir@1 - -workflows: - version: 2 - build: - jobs: - - elixir/build_test: - filters: &filters - tags: - only: /v.*/ - - elixir/test: - filters: - <<: *filters - - elixir/lint: - filters: - <<: *filters - - elixir/hex_publish: - requires: - - elixir/build_test - - elixir/test - - elixir/lint - context: - - Deployment - filters: - branches: - ignore: /.*/ - tags: - only: /v.*/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..983039e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,16 @@ +name: CI + +on: + push: + branches: ["**"] + workflow_dispatch: + +jobs: + build_test: + uses: membraneframework/membrane_actions/.github/workflows/build-test.yml@main + + test: + uses: membraneframework/membrane_actions/.github/workflows/test.yml@main + + lint: + uses: membraneframework/membrane_actions/.github/workflows/lint.yml@main diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..edc13ef --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,23 @@ +name: Release + +on: + push: + tags: + - "v*" + workflow_dispatch: + +jobs: + build_test: + uses: membraneframework/membrane_actions/.github/workflows/build-test.yml@main + + test: + uses: membraneframework/membrane_actions/.github/workflows/test.yml@main + + lint: + uses: membraneframework/membrane_actions/.github/workflows/lint.yml@main + + hex_publish: + needs: [build_test, test, lint] + uses: membraneframework/membrane_actions/.github/workflows/hex-publish.yml@main + secrets: + HEX_API_KEY: ${{ secrets.HEX_API_KEY }} From a238ddec351ebe641edb48accfb12fd34aa89568 Mon Sep 17 00:00:00 2001 From: Piotr Szeremeta Date: Mon, 20 Apr 2026 14:05:46 +0200 Subject: [PATCH 2/4] Update mix.lock --- mix.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.lock b/mix.lock index 5f36abc..45e920c 100644 --- a/mix.lock +++ b/mix.lock @@ -2,7 +2,7 @@ "bunch": {:hex, :bunch, "1.6.1", "5393d827a64d5f846092703441ea50e65bc09f37fd8e320878f13e63d410aec7", [:mix], [], "hexpm", "286cc3add551628b30605efbe2fca4e38cc1bea89bcd0a1a7226920b3364fe4a"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, "coerce": {:hex, :coerce, "1.0.2", "5ef791040c92baaa5dd344887563faaeac6e6742573a167493294f8af3672bbe", [:mix], [], "hexpm", "0b3451c729571234fdac478636c298e71d1f2ce1243abed5fa43fa3181b980eb"}, - "credo": {:hex, :credo, "1.7.17", "f92b6aa5b26301eaa5a35e4d48ebf5aa1e7094ac00ae38f87086c562caf8a22f", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "1eb5645c835f0b6c9b5410f94b5a185057bcf6d62a9c2b476da971cde8749645"}, + "credo": {:hex, :credo, "1.7.18", "5c5596bf7aedf9c8c227f13272ac499fe8eae6237bd326f2f07dfc173786f042", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "a189d164685fd945809e862fe76a7420c4398fa288d76257662aecb909d6b3e5"}, "dialyxir": {:hex, :dialyxir, "1.4.7", "dda948fcee52962e4b6c5b4b16b2d8fa7d50d8645bbae8b8685c3f9ecb7f5f4d", [:mix], [{:erlex, ">= 0.2.8", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b34527202e6eb8cee198efec110996c25c5898f43a4094df157f8d28f27d9efe"}, "earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"}, "erlex": {:hex, :erlex, "0.2.8", "cd8116f20f3c0afe376d1e8d1f0ae2452337729f68be016ea544a72f767d9c12", [:mix], [], "hexpm", "9d66ff9fedf69e49dc3fd12831e12a8a37b76f8651dd21cd45fcf5561a8a7590"}, From b14bfe4c568f64869a1b96eab04ac70195abb297 Mon Sep 17 00:00:00 2001 From: Piotr Szeremeta Date: Mon, 20 Apr 2026 14:58:24 +0200 Subject: [PATCH 3/4] Fix Elixir 1.19 and OTP 28 compatibility Co-Authored-By: Claude Sonnet 4.6 --- mix.exs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mix.exs b/mix.exs index dd5ded8..5b19197 100644 --- a/mix.exs +++ b/mix.exs @@ -43,19 +43,21 @@ defmodule Membrane.H26x.Plugin.Mixfile do {:bunch, "~> 1.4"}, {:membrane_stream_plugin, "~> 0.4.0", only: :test}, {:membrane_file_plugin, "~> 0.16.0", only: :test}, - {:ex_doc, ">= 0.0.0", only: :dev, runtime: false}, - {:dialyxir, ">= 0.0.0", only: :dev, runtime: false}, - {:credo, ">= 0.0.0", only: :dev, runtime: false} + {:ex_doc, "~> 0.34", only: :dev, runtime: false}, + {:dialyxir, "~> 1.4", only: :dev, runtime: false}, + {:credo, "~> 1.7", only: :dev, runtime: false} ] end defp dialyzer() do opts = [ - flags: [:error_handling] + flags: [:error_handling], + plt_add_apps: [:mix, :syntax_tools] ] if System.get_env("CI") == "true" do # Store PLTs in cacheable directory for CI + File.mkdir_p!(Path.join([__DIR__, "priv", "plts"])) [plt_local_path: "priv/plts", plt_core_path: "priv/plts"] ++ opts else opts From f032c86f067a558721b1f1a01705bb5325e4e9b6 Mon Sep 17 00:00:00 2001 From: Piotr Szeremeta Date: Thu, 7 May 2026 17:10:04 +0200 Subject: [PATCH 4/4] Relax constraints of support dependencies --- mix.exs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mix.exs b/mix.exs index 5b19197..d048a21 100644 --- a/mix.exs +++ b/mix.exs @@ -43,16 +43,15 @@ defmodule Membrane.H26x.Plugin.Mixfile do {:bunch, "~> 1.4"}, {:membrane_stream_plugin, "~> 0.4.0", only: :test}, {:membrane_file_plugin, "~> 0.16.0", only: :test}, - {:ex_doc, "~> 0.34", only: :dev, runtime: false}, - {:dialyxir, "~> 1.4", only: :dev, runtime: false}, - {:credo, "~> 1.7", only: :dev, runtime: false} + {:ex_doc, ">= 0.0.0", only: :dev, runtime: false}, + {:dialyxir, ">= 0.0.0", only: :dev, runtime: false}, + {:credo, ">= 0.0.0", only: :dev, runtime: false} ] end defp dialyzer() do opts = [ - flags: [:error_handling], - plt_add_apps: [:mix, :syntax_tools] + flags: [:error_handling] ] if System.get_env("CI") == "true" do