All Projects → dollarshaveclub → Acyl

dollarshaveclub / Acyl

Licence: mit
Testing Environments On Demand

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Acyl

Server Qa Checks
A bunch of QA checks to run against one or more servers to make sure they are built to a specific standard.
Stars: ✭ 72 (-31.43%)
Mutual labels:  qa
24pullrequests
🎄 Giving back to open source for the holidays
Stars: ✭ 1,290 (+1128.57%)
Mutual labels:  pull-requests
Microbean Helm
A Java API for Helm, the Kubernetes package manager.
Stars: ✭ 99 (-5.71%)
Mutual labels:  helm-charts
Php codesniffer
PHP_CodeSniffer is a set of two PHP scripts; the main phpcs script that tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard, and a second phpcbf script to automatically correct coding standard violations. PHP_CodeSniffer is an essential development tool that ensures your code remains clean and consistent.
Stars: ✭ 9,004 (+8475.24%)
Mutual labels:  qa
Qa Best Practices
This is a summary of QA practices Futurice uses and recommends to be used.
Stars: ✭ 88 (-16.19%)
Mutual labels:  qa
Helm Charts
Helm Charts for Jaeger backend
Stars: ✭ 94 (-10.48%)
Mutual labels:  helm-charts
Changelog Ci
Changelog CI is a GitHub Action that generates changelog, Then the changelog is committed and/or commented to the release Pull request.
Stars: ✭ 68 (-35.24%)
Mutual labels:  pull-requests
Aet
AET - a system that detects visual changes on web sites and performs basic page health checks
Stars: ✭ 100 (-4.76%)
Mutual labels:  qa
Revert
A GitHub Action to automatically revert a commit on a '/revert' comment
Stars: ✭ 89 (-15.24%)
Mutual labels:  pull-requests
Helm Charts
Contains Helm charts for Kubernetes related open source tools
Stars: ✭ 95 (-9.52%)
Mutual labels:  helm-charts
Helm Elasticstack
Kubernetes Helm Charts and Tools to run Elastic Stack(ELK) on Azure Container Service(AKS)
Stars: ✭ 76 (-27.62%)
Mutual labels:  helm-charts
Helm Charts
Kubernetes Helm Charts for the Center for Open Science
Stars: ✭ 88 (-16.19%)
Mutual labels:  helm-charts
Qa Checks V4
PowerShell scripts to ensure consistent and reliable build quality and configuration for your servers
Stars: ✭ 94 (-10.48%)
Mutual labels:  qa
Kube Linter
KubeLinter is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the applications represented in them adhere to best practices.
Stars: ✭ 1,177 (+1020.95%)
Mutual labels:  helm-charts
Jni By Examples
🎇Fun Java JNI By Examples - with CMake and C++ (or C, of course!) ‼️ Accepting PRs
Stars: ✭ 99 (-5.71%)
Mutual labels:  pull-requests
Export Pull Requests
Export pull requests and/or issues to a CSV file. Supports GitHub, GitLab, and Bitbucket
Stars: ✭ 68 (-35.24%)
Mutual labels:  pull-requests
Stolon Chart
Kubernetes Helm chart to deploy HA Postgresql cluster based on Stolon
Stars: ✭ 90 (-14.29%)
Mutual labels:  helm-charts
Kubecrt
Convert Helm charts to Kubernetes resources.
Stars: ✭ 102 (-2.86%)
Mutual labels:  helm-charts
Quiz
Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm
Stars: ✭ 100 (-4.76%)
Mutual labels:  helm-charts
Awesome Pull Requests
How people work together (PR welcome!)
Stars: ✭ 94 (-10.48%)
Mutual labels:  pull-requests

Acyl chloride

Acyl

CircleCI Docker Repository on Quay

Testing Environments On Demand

Acyl is a server and CLI utility for creating dynamic testing environments on demand in Kubernetes, triggered by GitHub Pull Requests.

Environments are defined by acyl.yml in your source code repository, and consist of one or more Helm Charts that are installed into a new Kubernetes namespace that is created on demand and torn down when you're finished. Environment lifecycles are tied to Pull Requests: a new environment is created when you open a PR, it is updated as you push additional commits to the PR (including force pushes), and finally it is destroyed when the PR is closed or merged, automatically.

Acyl includes features to make team collaboration and environment configuration easier for multiple teams working on complex application stacks, allowing teams to maintain separate isolated testing environments but share revisions of in-progress code when needed.

Acyl has been used in various forms as part of the core Dollar Shave Club software delivery pipeline since 2016, as described in a recent blog post.

Web UI

Acyl includes a full web UI with authentication/authorization based upon GitHub Apps.

Environment Configuration

Environments are defined by acyl.yml, which describes the required Helm Charts along with their release value configuration and the dependency relationships among them. The config file can be thought of as a "Helm compose", analagous to Docker Compose except using Helm Charts instead of individual containers. Acyl uses Metahelm to construct a dependency graph of the environment charts and installs them in optimal reverse-dependency order.

An acyl.yml in one application repository can reference acyl.yml files in other repositories, and those applications (and their dependencies) will be transitively included in the environment. In this way complex application stacks maintained by different teams can share testing environment configuration.

Examples

  • Acyl is self-hosting: we use it to create testing environments for Acyl development itself. See acyl.yml in this repository.
  • Furan also uses Acyl for testing environments.

Local Development

Acyl has CLI tools available to visualize, debug and test environment configurations locally.

acyl config info will validate, analyze and show a visualization for the acyl.yml in the current directory (which must be a valid git repository with GitHub remotes).

acyl config test <create/update/delete> will simulate PR open/push/close events and create, update or delete environments in a local Kubernetes cluster (Docker For Mac Kubernetes, MicroK8s, etc).

For more details, see Local Development.

Architecture

Architecture

  • Acyl: This is the server application which listens for GitHub webhook events and performs operations to create, update or destroy environments within your Kubernetes cluster. The server is intended to run within the same cluster, with ClusterAdmin permissions. The Acyl binary also can be used as a local CLI utility for local environment development and debugging.
  • Postgres: This is the primary datastore for Acyl.
  • Furan: This is used to build and push application Docker images on demand.
  • (OPTIONAL) Notifications can be sent to Slack channels or individual users when environments are created or altered.
  • (OPTIONAL) Vault can be used for Acyl secrets like GitHub tokens and database credentials.

Further Reading

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].