Skip to content

How this works

This is a custom solution to a complex problem: How to show people what I do and know!

Read the project outline below:

Goals

  • Define entire project as code
  • One git push builds everything
  • Docker container is built with site self contained

Technology used

Terraform GitHub Linux Cloudflare markdown Docker Google Cloud DigitalOcean CodeFresh AquaSec

Project Breakdown

As I progress I want to be able to apply to new jobs and make the hiring process super simple as there tends to be this 20 minute conversation on what tech you know vs dont know, as well as asking for a CV.

As an engineer, I fix a problem in a way that fits each case, so opposed to creating a CV site, this documentation has been built.

What I did?

I personally was responsible for:

  • Picking a CMS
  • Picking a CI/CD Pipeline provider
  • Building the content
  • Building the terraform for:
    • IAM
      • Service accounts
      • Custom roles
      • Infrastructure
  • Container security


How it works

  1. Changes are made to the MD (Mark down) files on my computer
  2. Push to github
  3. Codefresh catches on to changes
  4. Pulls files down
  5. Sets env variables
  6. Builds the mkdocs site
  7. Moves files around
  8. Builds docker container and pushes to gcr.io
  9. At the same time:
  10. Pushes to cloud run
  11. Pushes files to web server

Check the below screenshot for the pipeline Pipeline

Issues I had to overcome

Deployment time was too long

So on codefresh, it runs steps to deploy what ever you're feeding it. And it can take a while sometimes.

Checking gcr.io, I could see that the container was averaging 50mb, which for a container is huge

I was able to solve this as well as some security issues by moving to the :alpine version of the base image. Neat

Container had a bunch of CVE's

Using one of my favourite tools from Aqua sec, trivy, I was able to see all the CVE's related to the container image I built.

See before moving to :alpine

And after