$ yarn global add cirrus2
or with npm
$ npm install -g cirrus2
- Automatically sets up domains with SSL
- Monorepo support out of the box
- Plugins
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
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!
TODO: Write docs
All contributions are welcome! Please read below for guidelines on how to get started.
If you want to propose a new feature, open an issue.
- 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
!
Cirrus is released under the MIT License.
-
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)