{"id":23722534,"url":"https://github.com/membraneframework-labs/sebex","last_synced_at":"2025-07-03T11:04:29.092Z","repository":{"id":39814665,"uuid":"239708052","full_name":"membraneframework-labs/sebex","owner":"membraneframework-labs","description":"The ultimate assistant in Membrane Framework releasing \u0026 development","archived":false,"fork":false,"pushed_at":"2023-10-17T22:35:02.000Z","size":345,"stargazers_count":3,"open_issues_count":19,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-23T16:26:34.805Z","etag":null,"topics":["elixir","git","membrane","release-automation"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/membraneframework-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-02-11T08:05:28.000Z","updated_at":"2023-11-06T11:36:50.000Z","dependencies_parsed_at":"2025-05-23T16:14:34.157Z","dependency_job_id":"c4fe3bb0-4c98-40ee-8eee-bf4fe01530a6","html_url":"https://github.com/membraneframework-labs/sebex","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework-labs%2Fsebex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework-labs%2Fsebex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework-labs%2Fsebex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework-labs%2Fsebex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/membraneframework-labs","download_url":"https://codeload.github.com/membraneframework-labs/sebex/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/membraneframework-labs%2Fsebex/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":257198285,"owners_count":22505539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","git","membrane","release-automation"],"created_at":"2024-12-30T23:53:53.306Z","updated_at":"2025-07-03T11:04:29.047Z","avatar_url":"https://github.com/membraneframework-labs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sebex\n\nThe ultimate assistant in [Membrane Framework] releasing \u0026 development.\n\n## Installation\n\nSebex is a Python application and is officially supported on Linux and macOS systems. At least **Python 3.8** is required. There is also Elixir analysis code, which is written in Elixir itself and distributed as an _escript_. For this to work, a reasonably fresh **Erlang** installation is also needed.\n\nCurrently, building and installation directly from source code is the recommended way, and the whole procedure is scripted using a makefile:\n\n```bash\ngit clone https://github.com/membraneframework/sebex.git\ncd sebex\nmake install\n```\n\nUnder the hood this will build Elixir analyzer script and place it in the expected place, then it will install `sebex` package issuing `pip install --user .` command.\n\nTo update your existing installation, invoke `make install` again.\n\n## Usage\n### Setup communication with GitHub API\nMake sure the repositories of your GitHub Organization are public. To allow Sebex to edit your repositories:\n+ Generate a GitHub [Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) and set it as your `SEBEX_GITHUB_ACCESS_TOKEN` environment variable or pass it with the `--github_access_token` option.\n+ [Generate SSH key, add it to the ssh-agent](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) and [add to your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).\n\n### Preparation\n\nIt's advisable to use the `--workspace` and `--profile` options when running Sebex or to set the corresponding env vars: `SEBEX_WORKSPACE` and `SEBEX_PROFILE`.\n+ The workspace is a directory, where sebex clones repositories, so that it can work on them later on. It also contains `.sebex` subdirectory, with some metadata files needed for sebex to run properly. The default workspace (applicable to a situation in which you haven't explicitly specified the workspace) is the directory, from which you are running the sebex.\n+ The profile helps you manage different sebex configurations. Each profile is described by the `\u003cprofile name\u003e.txt` text file inside the `\u003cworkspace_directory\u003e/.sebex/profiles/` directory. You need to create that file on your own. An exemplary profile description file can be found inside `examples/` subdirectory of this repository. Note, that the `\u003cprofile name\u003e.txt` file has a `.txt` extension - later on, you will be able to refer to it with `--profile \u003cprofile name\u003e` option within the command syntax.\n\nTo add an organization run:\n\n```bash\nsebex bootstrap -o \u003cGithub organization name\u003e\n```\n\nThis will create the `manifest.yaml` inside the `.sebex` subdirectory of your workspace directory. The manifest will contain a list of all public repositories in that organization. To exclude broken or unsupported repositories from further analysis add a new line containing `!\u003cproject name\u003e` to your `\u003cworkspace directory\u003e/.sebex/profiles/\u003cyour profile\u003e.txt` file.\n\nTo perform further work Sebex must clone your organization's repositories to your local workspace:\n\n```bash\nsebex sync\n```\n\nYou can view the dependency graph of your projects:\n\n```bash\nsebex graph --view\n```\n\n### Releasing packages\n\nPrepare a release plan by listing the project names (names of the repositories) of the packages you want to release. After passing the name of each project, you will be asked to pass a tag of the version, which will be released.\nAt least one project name needs to be passed. When you are done with listing the needed projects, simply press enter.\n\n```bash\nsebex release plan\nProject: sebex_test_b\nVersion: 0.10.0\nProject: sebex_test_e\nVersion: 0.6.0\nProject:\n```\n\nImportant! All the projects updated with sebex must be Mix projects,  with the `@version` tag inside their `mix.exs` file.\nAll listed packages as well as their dependent packages will be bumped by one minor version (e.g. 0.2.1 -\u003e 0.3.0).\n\n```\nRelease \"Purely Easy Wahoo\"\n===========================\n\n1. Phase \"Surely Vocal Kitten\"\n * sebex_test_b, 0.2.0 -\u003e 0.3.0, publish\n * sebex_test_e, 0.2.0 -\u003e 0.3.0, publish\n2. Phase \"Easily Moved Tarpon\"\n * sebex_test_c, 0.2.0 -\u003e 0.3.0, publish\n dependencies: sebex_test_b, \"~\u003e 0.2.0\" -\u003e \"~\u003e 0.3.0\"\n3. Phase \"Vastly Nice Impala\"\n * sebex_test_d, 0.2.0 -\u003e 0.3.0, publish\n dependencies: sebex_test_c, \"~\u003e 0.2.0\" -\u003e \"~\u003e 0.3.0\"\n * sebex_test_f, 0.2.0 -\u003e 0.3.0, publish\n dependencies:\n - sebex_test_c, \"~\u003e 0.2.0\" -\u003e \"~\u003e 0.3.0\"\n - sebex_test_e, \"~\u003e 0.2.0\" -\u003e \"~\u003e 0.3.0\"\n\nSave this release? [y/N]:\n```\nThe release plan will be saved inside the `\u003cworkspace directory\u003e/.sebex/release.yaml` file.\nThe release is divided into several phases. The subsequent phase can be launched, once the previous phase is finished, which is necessary due to dependencies between projects.\nIn the first phase, we are releasing a new version of the listed projects. The later phase of the release comes with dependencies updates.\n\nTo execute the plan run:\n\n```bash\nsebex release proceed\n```\n\nfor each phase of the plan. \nDuring the release, follow the instructions provided by sebex.\n\n### Elixir\n\nAt the moment Elixir is the only supported language.\n\nSebex will modify your Elixir projects by updating your project version and dependencies in the `mix.exs` file. Those changes will be committed to Github and tagged as a version release. To publish those updated packages to [Hex](https://hex.pm/) you need to be logged in as an authorized Hex package maintainer on your machine.\n\nYou also need to set the `HEX_API_KEY` environment variable to your Hex user key. To generate the key run:\n\n```bash\nmix hex.user key generate\n```\n\nOnly packages that were released at least once will be published automatically by Sebex to avoid publishing work-in-progress projects.\nHowever, packages belonging to the Github `sebex-test-organization` will always be published.\n\n## Development\n\nWe use [Poetry] to manage dependencies, virtual environments, and builds. Run `poetry install` to install all dependencies. To build wheels run `make build`.\n\nPython tests are run using pytest, run `pytest` inside `poetry shell` to execute them. To run Elixir analyzer test, run `mix test` within its directory.\n\n## Support and questions\n\nIf you have any problems with Sebex or Membrane Framework feel free to contact us on the [mailing list](https://groups.google.com/forum/#!forum/membrane-framework), [Discord](https://discord.gg/nwnfVSY) or via [e-mail](mailto:info+sebex@membraneframework.org).\n\n## Copyright and License\n\nCopyright 2020, [Software Mansion](https://swmansion.com/?utm_source=git\u0026utm_medium=readme\u0026utm_campaign=membrane)\n\n[![Software Mansion](https://logo.swmansion.com/logo?color=white\u0026variant=desktop\u0026width=200\u0026tag=membrane-github)](\nhttps://swmansion.com/?utm_source=git\u0026utm_medium=readme\u0026utm_campaign=membrane)\n\nLicensed under the [Apache License, Version 2.0](LICENSE.txt)\n\n[Membrane Framework]: https://www.membraneframework.org/\n[Poetry]: https://python-poetry.org\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmembraneframework-labs%2Fsebex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmembraneframework-labs%2Fsebex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmembraneframework-labs%2Fsebex/lists"}