-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improve the README and add a contributor guide.
- Loading branch information
1 parent
0ab8801
commit e3c315f
Showing
2 changed files
with
97 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |