Skip to content

entranceplus/airplanes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Airplanes

A service that makes deployment of your code easier

Features available

  • 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

Features to be implemented

Command line tool

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

Service backend

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

Visibility into the builds happening

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.

Notes

Current rebuild flow

Performed on each upgrade

Actions during build

  • Update the deps.edn
  • Build the project. Command to be taken from :build key
  • If build is success, commit and push to remote
  • Now notify the deployed instances of upload

Actions on server

  • Perform git pull
  • Restart systemctl service

Deploy flow

Performed only the first time

Runner flow

  • Circle ci to be one of the runners
  • derive circle ci config from the edn file and run circle ci through project

Instructions

Development

Run a development pipeline from the command line:

$ boot dev

This will start a remote nrepl session

Note: Please make sure build.boot requires the system var in its namespace declarations.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors