{"id":13508578,"url":"https://github.com/AlloyCI/alloy_ci","last_synced_at":"2025-03-30T11:32:21.393Z","repository":{"id":25208332,"uuid":"85973100","full_name":"AlloyCI/alloy_ci","owner":"AlloyCI","description":"Continuous Integration, Deployment, and Delivery coordinator, written in Elixir.","archived":false,"fork":false,"pushed_at":"2022-12-09T13:47:53.000Z","size":4701,"stargazers_count":288,"open_issues_count":44,"forks_count":12,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-04-13T22:00:10.757Z","etag":null,"topics":["ci","ci-services","continuous-deployment","continuous-integration","continuous-testing","elixir","elixir-phoenix"],"latest_commit_sha":null,"homepage":"https://alloy-ci.com","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlloyCI.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-23T16:37:09.000Z","updated_at":"2024-04-07T09:12:26.000Z","dependencies_parsed_at":"2023-01-14T02:45:09.215Z","dependency_job_id":null,"html_url":"https://github.com/AlloyCI/alloy_ci","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlloyCI%2Falloy_ci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlloyCI%2Falloy_ci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlloyCI%2Falloy_ci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlloyCI%2Falloy_ci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlloyCI","download_url":"https://codeload.github.com/AlloyCI/alloy_ci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246314011,"owners_count":20757450,"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":["ci","ci-services","continuous-deployment","continuous-integration","continuous-testing","elixir","elixir-phoenix"],"created_at":"2024-08-01T02:00:55.071Z","updated_at":"2025-03-30T11:32:16.883Z","avatar_url":"https://github.com/AlloyCI.png","language":"Elixir","funding_links":[],"categories":["Miscellaneous"],"sub_categories":[],"readme":"# Alloy CI\n\n[![build status](https://alloy-ci.com/projects/1/badge/master)](https://alloy-ci.com/projects/1)\n[![Docker](https://img.shields.io/docker/pulls/alloyci/alloy_ci.svg)](https://hub.docker.com/r/alloyci/alloy_ci/)\n[![Coverage Status](https://coveralls.io/repos/github/AlloyCI/alloy_ci/badge.svg?branch=master)](https://coveralls.io/github/AlloyCI/alloy_ci?branch=master)\n\nAlloyCI is a Continuous Integration, Deployment, and Delivery coordinator,\nwritten in Elixir, that takes advantage of the GitLab CI Runner, and its\ncapabilities as executor. It also provides its own runner, the [Alloy Runner](https://github.com/AlloyCI/alloy-runner),\nwhich is a fork of the GitLab CI Runner, with extra capabilities.\n\nIt aims to bridge the gap between GitLab's CI runner and GitHub. GitLab's\nCI runner is tightly coupled with GitLab, so it is not possible to use one of\nthese runners from a GitHub codebase.\n\nWith AlloyCI you will be able to register one of the Runner projects to the platform,\nconnect it to one of your GitHub repositories, and have it run your CI and\nCD pipelines.\n\nAlloyCI will report the status of your pipelines to your pull requests, branches,\nand commits, so you can always know their status, just like any other CI service.\n\n## Goals\n\n- To provide a clean bridge between GitHub and the GitLab CI runner\n- To provide an alternative to other open source CI services\n- To leverage the great open source project that is the GitLab CI runner\n- To provide GitHub users with the same top class CI/CD that GitLab has, without\n  having to switch to, or use GitLab, or paying insane amounts for inferior services\n\n### Stretch Goals\n\n- To provide all the CI/CD/Pipelines functionality, currently available only to\n  GitLab EE, for free\n- To create a SaaS based on AlloyCI and provide a more cost effective alternative\n  to the current CI service ecosystem\n\n## Features\n\n- [x] Basic CI functionality:\n  - [x] Uses the [`.alloy-ci.yml`](doc/yaml/README.md) to define pipelines, jobs, and stages\n  - [x] Can send the required build information to the runner for processing when requested\n  - [x] Can receive status updates from runner\n  - [x] Can report back to GitHub with the statuses\n  - [x] Can send notifications via email with the status of a pipeline\n  - [x] Can send notifications to Slack with the status of a pipeline\n- [x] Extras\n  - [x] Build statistics per project\n  - [x] Build statistics per runner\n  - [x] Support for GitHub Enterprise\n- [x] Advanced CI functionality\n  - [x] Can run jobs on multiple environments (using the [`image` feature](doc/docker/README.md) of the Docker executor.)\n  - [x] Can use a local build cache to speed up jobs\n  - [x] Can build and test from pull requests coming from a fork\n  - [x] Can distinguish between tags and branches\n  - [x] Can make use of `only` and `except` tags for jobs\n  - [x] Can make use of secret variables stored on a per project basis\n  - [x] Can receive uploaded artifacts from runners\n  - [x] Can pass artifacts between build jobs as dependencies\n  - [x] Can manually specify dependent jobs via the `.alloy-ci.yml` file\n  - [x] Presents the artifacts to the user in a nice way, and allows download\n- [ ] Deployment functionality\n  - [x] Can manually start deployments (manual actions)\n  - [x] Can do auto deploys\n  - [ ] Can make use of different environments\n  - [ ] Can start Review Apps\n- [x] [Auto Scaling Support](https://github.com/AlloyCI/alloy-runner/tree/master/docs/install/autoscaling.md) (supported directly by the runner)\n  - [x] Can create runners on demand\n  - [x] Can destroy runners when not in use\n\n## Installation\n\nHead over to our [documentation](doc/) for more information.\n\n## Contributing\n\nPull requests are always welcome!\n\n1. Clone the Repository\n1. Run `mix deps.get` to install all dependencies\n1. Run `cd assets \u0026\u0026 yarn install` to install all Javascript dependencies\n1. Make sure all environment variables are present. See [here](doc/README.md#configuration) for more info. \n   You can save them in a `.env` file, and source them before running any `mix` task\n1. Create and migrate the database with `mix ecto.setup`\n1. Run tests with `make unit` or start a development server with `make run`\n1. Code \u0026 send your PR when ready\n\nBefore contributing, please read our [Code of Conduct](CODE_OF_CONDUCT.md) and\nmake sure you fully understand it. Violations will not be tolerated.\n\n## Copyright\n\nCopyright (c) 2018 Patricio Cano. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlloyCI%2Falloy_ci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAlloyCI%2Falloy_ci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlloyCI%2Falloy_ci/lists"}