Skip to content
/ cirrus Public

Cirrus is a push to deploy tool written above the cirrus clouds. Inspired by Evan You's pod.

License

Notifications You must be signed in to change notification settings

skoshx/cirrus

Repository files navigation

☁️ Cirrus

Cirrus is a push to deploy tool written above the cirrus clouds. Inspired by Evan You's pod.

license build prettier
jest PRs Welcome

Install

$ yarn global add cirrus2

or with npm

$ npm install -g cirrus2

Features

  • Automatically sets up domains with SSL
  • Monorepo support out of the box
  • Plugins

Available commands

create

allows you to create a cloud app either from a local repository or a GitHub remote.

Options
--port, -p Port to use for your app
--environment, -e Path to an .env file to source when creating app
--remote, -r Port to use for your app

TODO: Write the rest

Usage

First, log in to your Virtual Private Server. DigitalOcean offers VPS' for only 4$/mo.

$ ssh root@<ip>

Install Cirrus

$ npm install -g cirrus

Setup Cirrus. This step sets up necessary firewalls etc.

$ cirrus setup

Create an app.

$ cirrus init my-app

Then, on your local machine:

$ git remote add deploy https://<your vps ip>/
$ git push deploy main # deploy!

Docs

TODO: Write docs

Contributing

All contributions are welcome! Please read below for guidelines on how to get started.

Feature request

If you want to propose a new feature, open an issue.

Found a bug?

  1. Fork this repository to your own GitHub account and then clone it to your local device
  2. Link the package to the global module directory: npm link
  3. Within the module you want to test your local development instance of cirrus, just link it to the dependencies: npm link cirrus. Node.js will now use your local clone of cirrus!

License

Cirrus is released under the MIT License.

TODO

  • Tests

    • Deployment tests (write abstractions w dep injection)
    • Create project tests (write abstractions w dep injection)
    • Plugin tests (write abstractions w dep injection)
    • get logs, get project, get deployments tests
    • test deploying with mock app
  • Make sure "npm start" script exists in package.json

  • Check that correct version 2.30+ of git is installed.

    • Install command thing…
  • "Stream" command output so it doesn't feel as if the action is unresponsive

  • Logging

    • logging flag… [X]
  • Good error reporting

    • All errors should have some explanation or possible solution
    • Also have the error
  • Abstract away cirrus.json

    • Upon init a cirrus.json gets created in cirruspath/config/projectname.json
    • You can have a cirrus.json file in your GitHub repository, in which case that is prioritized (merged) with the project cirrus config on disk (for things like ports)
    • Remove port option (user shouldn't need to think about ports…)
  • Deploy in a way that doesn't take app offline

  • Plugins

    • Plugins can insert ENV variables to all programs; for instance, if we have POSTGRES plugin, then maybe we have a POSTGRES_CONNECTION_URL env variable passed to all programs. What ENV variables are exposed needs to be documented by the plugin.
    • Automatic Caddy server configuration plugin
      • Add path to CERT files to ENV
      • domain is determined in DEPLYOMENT section,
    • Automatic Postgres configuration plugin
      • Add connection url to ENV
    • Firewall setup plugin
  • Add possibility to init from github Instructions

$ cirrus init umami-software/umami
$ cirrus init railwayapp/blog
  • Ignore paths (low priority)

DigitalOcean Referral Badge

About

Cirrus is a push to deploy tool written above the cirrus clouds. Inspired by Evan You's pod.

Resources

License

Stars

Watchers

Forks

Packages

No packages published