Skip to content

Manage EVM protocol deployments. Inspired by Docker, Terraform, and npm.

License

Notifications You must be signed in to change notification settings

gimbernat13/cannon

 
 

Repository files navigation

Cannon

This is the monorepo for Cannon. If you're just interested in using the project, visit the website.

⚠️ Cannon is under active development. While the interface and functionality are generally stable, use the tool with caution when conducting high-risk deployments.

For more information, please see documentation in the modules listed below:

  • cli: The command-line interface. Run npx @usecannon/cli --help for usage information.
  • builder: Builds chain data from cannonfiles. (This is used by the CLI.)
  • hardhat-cannon: Code for the Hardhat plug-in, which wraps the CLI functionality with defaults pulled from a Hardhat project configuration.
  • registry: The smart contract for the package registry.
  • registry-subgraph: Indexes the registry contract onto The Graph for display on the website.
  • website: The website, hosted at https://usecannon.com

Usage Examples:

Development

Community contributions to Cannon are greatly appreciated. Please open pull requests, issues, and discussions in the GitHub repository.

To load a development version of Cannon, start by installing the dependencies from the root directory:

npm ci

After making changes, rebuild the project:

npm run build

Use the development version of the CLI:

cd ./packages/cli && npm start -- <package:version>

Test changes to the Hardhat plug-in in the sample project:

cd ./examples/sample-hardhat-project && npx hardhat cannon:build

Preview updates to the website

cd ./packages/website && npm run dev

Contribution Guidelines

See CONTRIBUTING.md

Version and Publish

We use changesets to manage versions on our monorepo.

Currently our release workflow on our CI handles bumping package versions and publishing releases to npm through lerna. It only publishes releases if any changeset PR's have been added to the commit history merged into main.

To trigger a new version bump run the following command (from the root of the repo):

  npm run changeset

If a situation where a commit was merged without a changeset, we can always bump and publish manually using lerna's version and publish workflow:

npx lerna publish --no-private will bump package versions and find npm packages that need to be published in the repo.

License

License: GPL v3

This project is licensed under the terms of the GNU General Public License v3.0.

Copyright (C) 2023 Daniel Beal, Noah Litvin, Matías Lescano

About

Manage EVM protocol deployments. Inspired by Docker, Terraform, and npm.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 92.2%
  • TypeScript 7.7%
  • Other 0.1%