rocketry

Deployment script for public websites

Usage no npm install needed!

<script type="module">
  import rocketry from 'https://cdn.skypack.dev/rocketry';
</script>

README

rocketry

rocketry

Simple deployment automation & continuous delivery for Node.js projects.

NPM Status NPM Download Stats License Ci Build Coverage Status


The Problem

Services like DigitalOcean's droplets and Linode's linodes make it super easy to create deployment targets for websites and other Node.js projects. However, there are still a lot of manual steps developers have to do in order to ship the app: install Node, install a runner like pm2 or forever, install system security patches, zip up & upload the app, create the necessary target directories, and more.

The Solution

Once you define a single configuration .rocketryrc file, you can run npx deploy run and everything will be handled for you. Then, with a few other small steps, you can automate the entire process via a CI tool so deployments occur automatically anytime you push changes to your master branch.

Installation & Usage

For instructions on how to use the tool, see /docs.

Goals & Roadmap

These are the goals for this project:

  • Installation & setup of target server
    • Install node and upgrade it to the latest version
    • Install yarn and upgrade it to the latest version
    • Install pm2 and upgrade it to the latest version
    • Upgrade apt-get packages to ensure the latest system security patches are installed
  • Automation of deployment steps
    • Create target directories on target server
    • Upload local project files to target server via SSH
    • Install/upgrade node dependencies on target server
    • Start/restart of services on target server
    • Start the application if it's the first deployment, otherwise restart it for updates
    • Integration with CI systems for automated deployment triggers
    • Automated deployments via username & password
    • Automated deployments via SSH key
    • Seamless deployments without downtime

Other Solutions

How does this project differ from similar existing public projects?

  • Netlify - It's incredible, but not free past a certain point
  • Vercel - Also incredible, but not free past a certain point
  • dploy - Doesn't support server-side package upgrades
  • dployr - Assumes the Git project is accessible from the server
  • shipit - JavaScript-based (as opposed to configuration-based) and doesn't support server-side package upgrades
  • zaz - Assumes the Git project is accessible from the server

Contributing

Contributions for bug fixes and new features are welcome via Pull Requests.

Publishing a New Version

  • Set the version you want in package.json (or leave it as is for an auto patch version bump)
  • Set the same version in CHANGELOG.md and put today's date and changes
  • Run npm run release
  • Set the next version in package.json
  • Add the next block to the CHANGELOG.md
  • Set git tag on the released commit

Simulate a Deployment

To simulate a deployment (to test the script), clone this project and run:

yarn start

LICENSE

MIT