Continuous Integration, Deployment, and Delivery coordinator, written in Elixir.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
assets Allow build and pipeline status to be updated automatically Jun 25, 2018
config Update distillery to 2.x and remove mix_docker Sep 7, 2018
doc Deprecate JSON config files in favor of YAML Jun 7, 2018
lib Allow users to re-authorize AlloyCI, in oder to be able to view repos… Sep 11, 2018
priv Basic changes for artifacts functionality Feb 28, 2018
rel Update distillery to 2.x and remove mix_docker Sep 7, 2018
test Fix wrong expectation on trace output Aug 28, 2018
.alloy-ci.yml Fix small errors on .alloy-ci.yml and Makefile Sep 14, 2018
.dockerignore Update installation documentation Mar 5, 2018
.formatter.exs Conform with Elixir 1.6 code formatter ᕕ(ᐛ)ᕗ Jan 19, 2018
.gitattributes Fix git attributes Mar 16, 2018
.gitignore Added support for GitHub Enterprise Mar 30, 2018
CHANGELOG.md Add CHANGELOG for v0.8.0 Sep 13, 2018
CODE_OF_CONDUCT.md Added Code of Conduct Jun 27, 2017
Dockerfile Use node v10.x for Docker images Sep 16, 2018
LICENSE Relicense as AGPL Apr 24, 2018
Makefile Fix small errors on .alloy-ci.yml and Makefile Sep 14, 2018
Procfile Heroku gets its own env Aug 1, 2017
README.md Deprecate JSON config files in favor of YAML Jun 7, 2018
app.json Implemented support for S3 object storage to store build artifacts Apr 4, 2018
docker-compose.yml.example Update distillery to 2.x and remove mix_docker Sep 7, 2018
elixir_buildpack.config Fix buildpack config for Heroku Aug 28, 2018
mix.exs Update distillery to 2.x and remove mix_docker Sep 7, 2018
mix.lock Handle Tentacat bug that causes repositories list to be returned in 2… Sep 10, 2018
nginx.conf.example nginx config example for prod Aug 8, 2017
phoenix_static_buildpack.config Fix heroku buildpacks May 11, 2017
run.sh Add a Makefile and a start script to make running in dev easier Jun 19, 2018

README.md

Alloy CI

build status Docker Coverage Status

AlloyCI is a Continuous Integration, Deployment, and Delivery coordinator, written in Elixir, that takes advantage of the GitLab CI Runner, and its capabilities as executor. It also provides its own runner, the Alloy Runner, which is a fork of the GitLab CI Runner, with extra capabilities.

It aims to bridge the gap between GitLab's CI runner and GitHub. GitLab's CI runner is tightly coupled with GitLab, so it is not possible to use one of these runners from a GitHub codebase.

With AlloyCI you will be able to register one of the Runner projects to the platform, connect it to one of your GitHub repositories, and have it run your CI and CD pipelines.

AlloyCI will report the status of your pipelines to your pull requests, branches, and commits, so you can always know their status, just like any other CI service.

Goals

  • To provide a clean bridge between GitHub and the GitLab CI runner
  • To provide an alternative to other open source CI services
  • To leverage the great open source project that is the GitLab CI runner
  • To provide GitHub users with the same top class CI/CD that GitLab has, without having to switch to, or use GitLab, or paying insane amounts for inferior services

Stretch Goals

  • To provide all the CI/CD/Pipelines functionality, currently available only to GitLab EE, for free
  • To create a SaaS based on AlloyCI and provide a more cost effective alternative to the current CI service ecosystem

Features

  • Basic CI functionality:
    • Uses the .alloy-ci.yml to define pipelines, jobs, and stages
    • Can send the required build information to the runner for processing when requested
    • Can receive status updates from runner
    • Can report back to GitHub with the statuses
    • Can send notifications via email with the status of a pipeline
    • Can send notifications to Slack with the status of a pipeline
  • Extras
    • Build statistics per project
    • Build statistics per runner
    • Support for GitHub Enterprise
  • Advanced CI functionality
    • Can run jobs on multiple environments (using the image feature of the Docker executor.)
    • Can use a local build cache to speed up jobs
    • Can build and test from pull requests coming from a fork
    • Can distinguish between tags and branches
    • Can make use of only and except tags for jobs
    • Can make use of secret variables stored on a per project basis
    • Can receive uploaded artifacts from runners
    • Can pass artifacts between build jobs as dependencies
    • Can manually specify dependent jobs via the .alloy-ci.yml file
    • Presents the artifacts to the user in a nice way, and allows download
  • Deployment functionality
    • Can manually start deployments (manual actions)
    • Can do auto deploys
    • Can make use of different environments
    • Can start Review Apps
  • Auto Scaling Support (supported directly by the runner)
    • Can create runners on demand
    • Can destroy runners when not in use

Installation

Head over to our documentation for more information.

Contributing

Pull requests are always welcome!

  1. Clone the Repository
  2. Run mix deps.get to install all dependencies
  3. Run cd assets && npm install to install all Javascript dependencies
  4. Make sure all environment variables are present. See here for more info. You can save them in a .env file, and source them before running any mix task
  5. Create and migrate the database with mix ecto.setup
  6. Run tests with mix test or start a development server with mix phx.server
  7. Code & send your PR when ready

Before contributing, please read our Code of Conduct and make sure you fully understand it. Violations will not be tolerated.

Copyright

Copyright (c) 2018 Patricio Cano. See LICENSE for details.