A brief “release checklist”, something that would scare anybody and let him run miles away!
Yes, definitely, it was more than one month since i wrote a post and this was due to some circumstances: holidays (two weeks during Christmas time) and the most eager one, developing a product and releasing it.
So this is a release checklist, as you can find a lot on the web. This was mine and it doesn’t cover all aspects of the release!
Let’s break them into some areas: operations, deployment and miscellanea (non-code, non-operations, non-deployment).
…but before i have a premise: i’m a solo developer working a one-man project: i don’t need different authorization levels, team privileges isolations and enterprise’s projects needed stuffs like that.
All the stuffs related with sys-admin and software installments. This may obviously vary from project to project but a good amount should be common to a lot of projects.
2019 DEVOPS ALERT: i’m gonna setup a machine for my project in a old-school way and i’m not using some great (but still not mastered by me even if used on some projects) technologies like docker, so please, do not be horrified by this!
- create machine (i’m using DigitalOcean’s droplet)
- create specific sudo user
- configure ssh access via certs
- install ngnix
- install mysql
- configure mysql for access via specific credentials
- install Node
- configure ngnix-node proxy
- test with basic node express apps that everything is well configured
- install pm2
- setup DNS
- setup letencrypt (with dry autorenewal test)
- setup db backups
- review all environment variables
- configure git repository to pull code
- verify everything restarts automatically if something goes wrong or if machine is rebooted
- setup file-system (yes, i’m not even using S3 since i’ve plenty of local space for what i need already payed on the droplet)
- setup pm2 commands to run apps
- create scripts to run deploy (git pull, npm install, pm2 restarts)
- verify everything is running smoothly
- test deploy procedure (in my case i can do everything from my IDE)
All the stuffs that aren’t operations and deployment
- buy domain (don’t underestimate time required if you are looking for a not already registered .com domain)
- stripe products
- stripe go-live setup
- mailgun setup
- setup mailgun with gmail (poor’s man solution to get email for a custom domain for free and use it from gmail)
- setup robots.txt to deny any crawling until you are live
- setup sitemap.xml
- setup google-analytics
- write a blog article, at least one
- setup robots.txt to allow any crawling when you are live
Deployment notes and IntelliJ
Well, it’s not that JetBrains (the company behind IntelliJ) doesn’t release crazy bugs in their software and takes “a little to fix them” but you know, js is not their priority. Anyhow the debilitating issue was fixed on December 2018.
Anyhow my deployments procedure is the following:
- commit code and push it
- go on production machine and start a script that pulls the code from master branch, executes npm install, restarts (via pm2) js apps
It is possible to configure IntelliJ to automatically connect via ssh and run the script and assign a shortcut to this command so i can simply git push code and run the deployment process without leaving the IDE, without leaving the keyboard.
And since i own Ultimate Edition, i configured the db plugin to connect via ssh to production DB and manage it directly from the IDE.
This is not a full checklist. These are just a part of what you need to do (code aside) before a release. These steps were the ones that i needed to execute before releasing my Saas.
I don’t want to reveal in this article what is the project i’ve built during these two months, i’ll write a new article just for that.
That’s all folks! Happy release!