Went from empty folder to CI/CD of an application in an evening. Emphasize the importance of "getting it done" rather than "getting it perfect". "Don't let perfect be the enemy of good". Highlights:
Took 3 hours; specific time is not important, but relative to other side projects, this is a huge improvement
Commitment to "getting it deployed" and not necessarily doing it perfect
Note that this is all tech I've used before
Maybe with the exception of deploying from GitHub Actions
Setting up deployment from the start is an easier obstacle to overcome than deploying a more complex application
Initial setup means just exposing a webserver
Deploying later means setting up a webserver and a database and any other requirements all at once
Easier to build on something that works (eg add database to existing deployment)
Instances of doing something that just worked
Manually create DO droplet
Ideally everything is infrastructure as code, but starting there often means getting bogged down in problems tangential to your application
Secrets stored in GitHub Secrets (not in git) as opposed to something like Ansible Vault (or overkill like Hashicorp's Vault)
"But what if they need automated rotation". no.
"But script everything". no
Hacker News comment on why software is prone to over-engineering
We don't want to look like fools because we didn't anticipate some future need
Real solution is to keep things as simple and readable as possible for the current needs which facilitates future refactoring.
Don't refactor now for the potential needs of the future
Went from empty folder to CI/CD of an application in an evening. Emphasize the importance of "getting it done" rather than "getting it perfect". "Don't let perfect be the enemy of good". Highlights: