cirrus2
v0.4.1
Published
Cirrus is a push to deploy tool written above the cirrus clouds. Inspired by Evan You's pod.
Downloads
5
Maintainers
Readme
Cirrus is a push to deploy tool written above the cirrus clouds. Inspired by Evan You's pod.
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?
- Fork this repository to your own GitHub account and then clone it to your local device
- Link the package to the global module directory:
npm link
- 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 ofcirrus
!
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 incirruspath/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…)
- Upon init a
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
- Plugins can insert ENV variables to all programs; for instance, if we have POSTGRES plugin, then maybe we have a
Add possibility to init from github Instructions
$ cirrus init umami-software/umami
$ cirrus init railwayapp/blog
- Ignore paths (low priority)