At work, I get to click a button, wait 5 minutes and see my work deployed in either test, UAT or production environment. With almost no stress that something infrastructural can go wrong.

Our DevOps team is telling us that we will have to think less about this process in near future.

I am growing curious: What does that button do, exactly?

Well, there are two buttons. One is “pressed” by a webhook from Github (I think?) and builds and stores a Docker image. The other then actually does the deployment.

The container is built through this steps, noted down verbosely:

  • Initialize job
  • Pre-job
    • Download pgp dev
    • Download pgp data
    • Download sops file
    • helm package
  • Checkout git repository
  • Ensure PGP key installed
  • Construct version number
  • Fetch tags
  • Set the Helm Chart version on on values-*.json
  • Update dependencies
    • test [environment]
    • uat [environment]
  • upload: Helm folder
  • Clean Docker cache
  • Docker login
  • Generate Helm charts
  • Download: helm charts
  • Remove unnecessary files
  • Override deployment
  • Helm lint
  • Helm package
  • Build an image
  • Push the image
  • Push to chart museum
  • Push to chart museum prod
  • Publish artifact: environments
  • Update patch numberin variable group
  • Clean agent directories
  • Post-job:
    • clean agent directories
    • helm package
    • Checkout gitrepository (??)

Then the deployment is done through these steps:

  • Initialize job
  • Pre-job
    • Download pgp dev
    • Download pgp data
  • Download artifact - build - environments
  • Download artifact - build - full-helm-chart
  • Ensure PGP key installed
  • Deploy
  • Finalize job