This repo contains assets for a hands-on DevSecOps class which enables you to legitimately claim this on your resume:
"Automated with bash and python scripts an end-to-end CI/CD workflow, triggered by commits and pushes to a Git cloud repository, to instantiate utility services using Docker, then build, test, and deploy to several environments a 12 Factor app that uses Kubernetes to load-balance and auto-scale within a monitored Google cloud that has logging."
This is not a bunch of talk and fancy PowerPoint.
Our approach is that you manually follow our step-by-step instructions so you can see the scripts run, first-hand.
- How to write bash scripts to be "idempotent", so you can run them again and again.
- How to check for errors at each step so the script stops upon error.
- How to avoid using the wrong geographic zone (a mistake can can cost a lot of money).
- How to ensure that the same data is used by several commands.
- How to make sure that changes to a GitHub repository do not disrupt your script.
- How to automatically update a GitHub repository you forked to your own account.
Here is what you'll do:
Along the way, PROTIP comments highlight tips and tricks of the pros, such as:
If you get stuck, we provide one-on-one coaching and mentoring sessions while we share screens.
-
Setup your laptop with the best and most popular tools and utilities the top pros use.
- How to setup your laptop quickly (using dotfiles and brew/chocolatey).
-
Sign up for accounts on Gmail, Google Cloud, GitHub, Docker, etc.
-
Clone sample repositories on your own laptop.
-
Generate based on Swagger OpenAPI specs file.
-
Setup auto-detection of file changes to invoke local code scan.
-
Add web hooks to your source code repository to recognize and act on changes.
-
Define maven pom.xml file.
-
Setup Jenkins server to fire off.
-
Groovy scripts in a Jenkins server on Cloudbees cloud.
-
Edit a NodeJs sample project with linting and functional testing automation
-
Dockerize the app by defining a Dockerfile for the app.
-
Setup SonarQube server and rules to scan source code.
-
Define front-end load balancing in Kubernetes.
-
Construct Selenium using JUnit to test Java coding.
-
Construct Pact proxy to conduct automated integration testing.
-
Define JMeter scripts to generate load which invoke auto-scaling
-
cAdvisor to forward server metrics to InfluxDB
-
InfluxDB database instance to hold and summarize monitoring statistics
-
Graphana instance to display monitoring trends
With this course, you skip the fumbling around because we have already figured it out for you.
Now sign up and let's go.