A service that makes deployment of your code easier
- Create new instances of linode / digital ocean server
- generate nginx and systemd config for your services from clj map
- setup (start/ reload) systemd behaviour on a remote ip
- install various tools (postgres / java) on a remote ip (for ubuntu only)
- a runner that reads from deploy.edn and runs / updates given app from the given git host and the remote ip.
- Runner can also parse clj’s deps.edn and update any git dependecies if a newer hash is present for it. (eg. see deployments if ep-build)
- Runner can perform git commits and push to the remote
The idea is that this should allow the user to login to the service and perform new deployments or manage existing deployments.
- Allow login and signup through aviana
- Create a new deployment. This would take us through prompts to fill the required details.
- Allow deploy command for individual deployment configured.
- List existing deployments
This would be the companion apis needed for the command line tool to work.
- POST users:user-id/app creates a new deployment (referred to as app)
- POST users:user-id/app/:app-id/deploy build and deploy the configured app. The request for this would basically be an entry from the deploy.end. On receiving this request, we start the build and deploy process for the configured app.
- GET users:user-id/app lists existing deployments
In the current model, build steps are clojure fns. This provides no visibility into the builds running i.e. we can’t see the steps happening, the errors occurred, etc. We can provide additional runners eg. circleci or lambdacd pipelines for improving this.
Performed on each upgrade
- Update the deps.edn
- Build the project. Command to be taken from
:buildkey - If build is success, commit and push to remote
- Now notify the deployed instances of upload
- Perform git pull
- Restart systemctl service
Performed only the first time
- Circle ci to be one of the runners
- derive circle ci config from the edn file and run circle ci through project
Run a development pipeline from the command line:
$ boot devThis will start a remote nrepl session
Note: Please make sure build.boot requires the system var in its namespace declarations.