Skip to content

Commit

Permalink
Improve the README and add a contributor guide.
Browse files Browse the repository at this point in the history
  • Loading branch information
RobbieMcKinstry committed Nov 15, 2024
1 parent 0ab8801 commit e3c315f
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 20 deletions.
36 changes: 36 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Contributing to MultiTool Canary

We track open issues in GitHub and Linear. If there's a feature you'd like to see added, please check the list of open issues first, then open a new issue if you can't find a match for your feature request.

Before submitting a PR for a feature, we highly recommend you discuss the idea in an issue with us first.

## Building from Source

This repository uses Cargo-Make, Rust, and Cargo. There are a couple of other tools required to run the entire workflow.

TODO: Note the tools, like Cargo-Sort. Pull this list from the Registry repo.

## Working with Merge Queues

This repository uses GitHub Merge Queues to control the delivery of
Docker images.

GitHub Merge Queues are a fairly new feature, so there's still
some unintuitive behavior to work through. For example, please note
that "required status checks" must pass *both* before enqueueing a PR is
allowed *and* for an enqueued PR to successfully merge. To facilitate
running separate checks for PR readiness (*i.e.* light-weight tests to check if
a PR ready to be merged) and validation (*i.e.* run heavy-weight tests
running immediately before merging), we give two jobs the same name
even though they fire on different events.

The job `⚡PR Ready` is a special name we use for both jobs. The
emoiji character is specifically used to distinguish it as a special
type of job. The workflow should only ever call into other workflows,
giving us the most flexibility with workflow reuse.

Below, you'll find resources for working with and
understanding merge queues. It's pretty light for now, so feel free
to add more links.

* [GitHub Actions Patterns](https://github.com/orgs/community/discussions/103114#discussioncomment-8359045)
81 changes: 61 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,67 @@
# Canary
# MultiTool Canary

## Working with Merge Queues
## What is MultiTool Canary?

This repository uses GitHub Merge Queues to control the delivery of
Docker images.
MultiTool Canary is an agentic deployment tool to quickly detect and rollback defective. It's a CLI tool that creates and monitors canary deployments, controlling the amount of traffic they receive, and automatically yanking deployments that produce an anomolous number of bad responses. MultiTool Canary improves release confidence by giving you a robust measure of stability and acting quickly and autonomously when bugs sneak into production.

*N.B.*: GitHub Merge Queues are a fairly new feature, so there's still
some unintuitive behavior to work through. For example, please note
that "required status checks" must pass *both* before enqueueing a PR is
allowed *and* for an enqueued PR to successfully merge. To facilitate
running separate checks for PR readiness (*i.e.* light-weight tests to check if
a PR ready to be merged) and validation (*i.e.* run heavy-weight tests
running immediately before merging), we give two jobs the same name
even though they fire on different events.
## Table of Contents

The job `⚡PR Ready` is a special name we use for both jobs. The
emoiji character is specifically used to distinguish it as a special
type of job. The workflow should only ever call into other workflows,
giving us the most flexibility with workflow reuse.
[TOC]

Below, you'll find resources for working with and
understanding merge queues. It's pretty light for now, so feel free
to add more links.
## Installation

MultiTool Canary can be installed with Homebrew, NPM, Powershell, or via `curl`.

**Installing with Homebrew:**

```sh
brew install wack/tap/canary
```

**Installing with NPM:**

```sh
npm install @multitool/[email protected]
```

**Installing with curl:**

```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/wack/canary/releases/download/v0.1.0-alpha.1/canary-installer.sh | sh
```

**Installing with Powershell:**

```sh
powershell -ExecutionPolicy ByPass -c "irm https://github.com/wack/canary/releases/download/v0.1.0-alpha.1/canary-installer.ps1 | iex"
```

See [Releases](https://github.com/wack/canary/releases) for pre-built binaries, checksums, and guides to install on additional platforms.

### Building from source

To build MultiTool Canary from source, see the instructions in [CONTRIBUTING.md](https://github.com/wack/canary/blob/trunk/README.md).

## Platform support

MultiTool Canary has official builts for 64-bit Windows, macOS (Apple Silicon and x86), and Linux. No official support is provided for 32-bit architectures, but the CLI should work fine on 32-bit platforms.

| | Apple Silicon macOS | Intel macOS | x64 Windows | x64 Linux |
| :--------: | :-----------------: | :---------: | :---------: | :-------: |
| Homebrew |||||
| NPM |||||
| Curl |||||
| Powershell |||||

## Mission

Our mission is to take agentic deployments mainstream. Right now, operators are either synchronously watching deployments go live, or passively relying on metric alerting to identify service disruptions. In either case, using an AI agent to *proactively* identify and rollback disruptive deployments *before* they reach 100% of users is a better approach.

MultiTool Canary is our beachhead strategy to introduce agentic deployments to everyone. We believe MultiTool's goal of improving the robustness and simplicity of cloud-native deployments is a step-function improvement on the status quo. To learn more about us, visit [our company website](https://www.multitool.run/company).

## Contributing

:rocket: We accept pull requests! :guitar:

See [CONTRIBUTING.md](https://github.com/wack/canary/blob/trunk/CONTRIBUTING.md) for more information.

* [GitHub Actions Patterns](https://github.com/orgs/community/discussions/103114#discussioncomment-8359045)

0 comments on commit e3c315f

Please sign in to comment.