Hacker News new | ask | show | jobs
by vbsteven 1887 days ago
My usual setup is pretty simple with each service in its own git repository with a Gitlab pipeline:

  * build code
  * run tests (unit + integration using database)
  * build docker image
  * push to gitlab registry
  * deploy to staging k8s environment by using a custom image that just templates a .yml and does `kubectl apply` against the staging cluster
  * optional extra "deploy to production" that works in the same way but is triggered with a manual button click in the pipeline.
I don't do canary deploys or anything. Just deploy to staging, and if it works, promote to production.

For some projects I have "staging test scripts" which I can run from my devmachine or CI that check some common scenarios. The test scripts are mostly blackbox using an HTTP client to perform a series of requests and assert responses. (signup flow scenario for example)

I would like to move to a monorepo, but I have not yet figured out an easy way to have a separate pipeline for each service that is only triggered when that service has changed.

edit: formatting

1 comments

The issue with this model of manual deployment to production is that it creates uncertainty about what version was last deployed to, and the team can lose confidence in the deployment process if that doesn't happen regularly