Skip to content
tezvyn:

CI/CD & Automation

GitHub Actions, Terraform, ArgoCD, IaC, pipelines

85 bites

Test yourself: Top 30 intermediate CI/CD & Automation concepts questionsMultiple choice, with the correct answer and why it is correct on every question. Free, no sign-in.

Intermediate concepts in CI/CD & Automation

intermediate2 min read

Artifact Repository: Your CI/CD's Private Library

An artifact repository is your CI/CD's private library for build outputs like packages and images. CI pipelines publish artifacts here, and deployment scripts pull from it.

intermediate2 min read

Infrastructure as Code: Manage Servers with Code, Not Clicks

Infrastructure as Code (IaC) treats servers and networks like software: defined in files and versioned in Git. It's used to automate cloud resource provisioning on AWS or GCP, ensuring consistent, repeatable environments.

Blue-Green Deployment: Zero-Downtime Releases
intermediate2 min read

Blue-Green Deployment: Zero-Downtime Releases

Run two identical production environments, Blue (live) and Green (new). To deploy, just flip a switch routing traffic to Green. This enables zero-downtime releases and instant rollbacks. The footgun is using DNS for the switch, which can lag due to caching.

intermediate2 min read

Canary Release: Test New Code on Real Users, Safely

A canary release is like sending a canary into a coal mine: expose a new version to a small group of users to detect problems before a full rollout. It's used to safely test changes in production by gradually shifting traffic.

Pull Requests: A Structured Conversation About Code
intermediate2 min read

Pull Requests: A Structured Conversation About Code

A Pull Request (PR) is a structured conversation about a proposed code change. It's used in team projects to review new features and fixes, ensuring quality and sharing knowledge. The footgun is treating PRs as a rubber-stamp approval instead of a real review.

intermediate2 min read

Git Merge: Combining Development Histories

Git merge combines separate lines of development into one branch. It creates a special merge commit that ties the two histories together, preserving the context of each. Use it to integrate a feature branch into your main line.

intermediate2 min read

Git Rebase: Rewriting History for a Cleaner Timeline

Git rebase rewrites history by transplanting your commits onto a new base, creating a clean, linear project history instead of a merge bubble. It's used to catch a feature branch up with main. Never rebase a branch others are using; it rewrites history.

intermediate2 min read

Git Tags: Immutable Milestones for Release History

A Git tag is a permanent bookmark on a commit, usually marking releases like v2.0. Annotated tags store author, date, and GPG signatures to anchor deploy pipelines.

GitHub Flow: A Simple, Branch-Based Workflow
intermediate2 min read

GitHub Flow: A Simple, Branch-Based Workflow

GitHub Flow is a simple workflow where main is always stable and new work happens on a feature branch. It's used for continuous delivery, from code to documentation.

intermediate2 min read

Static Analysis: Read Code, Don't Run It

Static analysis is like a spell checker for your code, catching errors before you run the program. It powers linters and security scanners in CI pipelines to find bugs and vulnerabilities. The footgun: it can't understand intent, leading to false positives.

intermediate2 min read

Apache Maven: Convention Over Configuration for Builds

Maven standardizes your build process using a 'convention over configuration' model, defining project structure and dependencies declaratively. It's the backbone of many Java projects, ensuring consistent builds. The footgun is fighting its conventions.

intermediate1 min read

Gradle: Code-Based Builds, Not XML

Gradle treats your build process like code, not configuration, using a flexible Groovy or Kotlin DSL instead of rigid XML. It's used for compiling and packaging multi-language projects.

intermediate2 min read

Maven's Build Lifecycle: A Sequence of Build Phases

Maven's build lifecycle is a predefined sequence of phases like compile, test, and package. Running a phase executes all preceding ones, ensuring a consistent build.

intermediate2 min read

Code Coverage: What Your Tests Don't Tell You

Code coverage measures which lines of code your tests execute, not how well they're tested. It's used in CI to enforce a testing baseline, but the footgun is mistaking high coverage for high quality—100% coverage can exist with zero useful assertions.

intermediate2 min read

Quality Gates: Your Automated Code Quality Checklist

A quality gate is an automated checklist that asks, 'Is this code ready to release?' It runs in CI/CD to enforce standards on metrics like bugs and test coverage, blocking merges that fail. The footgun is using one gate for all projects; tailor rules to.

intermediate2 min read

Regression Testing: Don't Break What's Already Working

Regression testing asks: 'Did my new code break old features?' It's re-running existing tests after a change to catch unintended side effects. It's crucial in CI/CD pipelines before deploying. The footgun is a slow suite that developers skip.

intermediate2 min read

Software Performance Testing: How a System Behaves Under Stress

Performance testing answers 'how does it work under load?' It simulates user traffic to measure a system's responsiveness, stability, and resource use. The footgun is testing unrealistic scenarios instead of finding real-world breaking points.

intermediate2 min read

Maven Coordinates (GAV): The Address of Your Code

Maven Coordinates (GAV) are like a postal address for a software library. You use them in a pom.xml to declare your project's identity and specify its dependencies.

Package Lock Files: Ensuring Reproducible Builds
intermediate2 min read

Package Lock Files: Ensuring Reproducible Builds

A package lock file is a snapshot of your dependency tree, ensuring everyone on your team and your CI server installs the exact same package versions. It's crucial for preventing "works on my machine" bugs.

intermediate2 min read

Maven SNAPSHOTs: Versions for Active Development

A SNAPSHOT version tells Maven 'this is a work-in-progress,' allowing newer builds to replace it without a version bump. Use it in CI for active development so dependent projects get the latest changes.

We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.

See open roles