Hi, I'm looking if any of the solopreneurs or small shops (5-10 people) could give some insight into their CD.<p>Do you practice CD, and if so how?<p>I run two unrelated Django monolith applications, which serve me very well. I use CircleCI for Continous Integration, and it works well enough. The benefits of CI are of course muted if one is rolling completely solo, however I'm bringing on another dev this year so that's fine.<p>Where I get lost is CD. Right now I still manually ssh into the VM and pull latest changes, run migrations and install any new dependencies, compile static if necessary, etc. etc.<p>How can I reliably integrate CD into this small application? Would Ansible be a good solution?<p>A key obstacle for me are the migrations. Is it best to migrate your DB completely separately? Test any migrations before hand and commit the migration scripts as well? It's uncommon but not out of the question that I need to manually edit a migrations script to massage the database back to a state it needs to be. Any Django user probably has a similar experience to share.<p>Although I welcome discussion about Kubernetes and other orchestration tools, I'm looking for something a little more lightweight.<p>Looking forward to a good discussion, some of the best threads on HN are those with founders swapping knowledge.<p>Thanks in advance.
Manually installing deps is where you are getting lost.<p>If you have a clean os install (say a new cloud vm) you can write a script (say in bash) that installs dependencies.<p>For instance I wrote a Java program that used AWS to spin up a VM and commanded the machine to run a bash init script, which in turn posted a message to SQS when the build succeeded or failed. (Since it didn’t involve making a large number of network requests over time this build script was simple and reliable…. It didn’t involve holding an ssh connection for a long time or other schemes that could get hung up because the build tool got hung up.)<p>Docker, vagrant, ansible require you to do all the work above , still know everything you’d need to know to write a bash script AND require you to learn more about a tool and work around its quirks.<p>Look at what the minimum requirements are — a two-step operation (1) build machine, and (2) build the system on the machine was good enough and has the simplest possible error handling scenario (never have a network request between my workstation and the build machine cause step 2 to fail or need recovery).