Jenkins + Docker Pipeline from GitHub

What I Built I wanted Jenkins to pull code from GitHub, build a Docker image, and run a container automatically. This post is the pipeline I put together for that. Goal: From Manual to Automatic Manually, we usually do this: Clone a GitHub repository Run docker build Run docker run Check the output With Jenkins, all of this happens automatically when the pipeline runs. You click Build Now (or trigger from GitHub), and Jenkins does the rest. ...

February 10, 2026 · 4 min · Saad

Jenkins on Arch Linux: How I Set It Up on i3

Why I Wrote This I run Arch Linux with i3 and wanted Jenkins locally for CI/CD experiments. This covers Java 21, the Jenkins install, a test job, and a GitHub pipeline — exactly what I ran on my machine. 1. What is Jenkins? (Simple Explanation) Jenkins is an automation server. You can tell Jenkins to: Get your code (for example from GitHub) Run commands (build, test, scripts) Show you if things passed or failed Instead of you running commands manually every time, Jenkins does it automatically. ...

February 9, 2026 · 7 min · Saad

Ansible: Docker and Kubernetes Node Setup

Why This Post Exists After writing my first real Ansible playbook, I realized something: Installing software manually once is easy. Installing it correctly, repeatedly, and safely is not. So I decided to automate something real and useful: Install Docker Engine (official way) Prepare an Ubuntu server to become a Kubernetes node Do everything using Ansible No SSH-ing into the server again and again This post documents that journey. Real Setup (Same as Before) Nothing fancy. Just real machines. ...

January 17, 2026 · 4 min · Saad

Ansible for Beginners: My First Real Automation

What is Ansible? (In Simple Words) Think of Ansible as a remote control for your servers. Instead of: SSH into server Run commands manually Forget what you changed Repeat the same steps again and again You tell Ansible: “Hey, I want this server to look like this.” And Ansible makes it happen — again and again, without breaking things. The best part? No agent needed Just SSH Simple YAML files Very human-readable My Setup (Real World) This is exactly what I used: ...

January 15, 2026 · 4 min · Saad

Terraform: How I Stopped Clicking Around in AWS

What Terraform Is (For Me) Terraform is how I describe cloud stuff in code instead of clicking through the AWS console. I write what I want in .tf files, run terraform apply, and it gets created. Same result every time. Why Use Terraform? No More Manual Clicking: Automate infrastructure setup instead of clicking through AWS Easy Updates: Change your code and run terraform apply to update everything Backup Your Infrastructure: Keep your setup in version control (like Git) Reuse Everywhere: Run the same setup in dev, staging, and production without changes Cost Preview: See what resources cost before you create them Work with Multiple Clouds: Manage AWS, Azure, and Google Cloud from one tool Basic Concepts (Made Simple) Providers A provider tells Terraform which cloud service to use. Think of it as picking AWS, Google Cloud, or Azure before you start building. ...

December 14, 2025 · 6 min · Saad

Chef Server Setup: What I Did on Ubuntu

Why I Looked Into Chef Managing servers one by one doesn’t scale. I set up Chef to store server configs as code — a Chef server, a workstation where I write recipes, and a node that pulls its config automatically. Note: I did this on Ubuntu 18.04 using .deb packages and apt. Chef Server The Chef server acts as the central hub for all workstations and nodes under Chef management. Configuration changes made on workstations are pushed to the Chef server, where they are pulled by nodes using chef-client to apply the configurations. ...

August 2, 2022 · 3 min · Saad

Puppet with Docker: How I Tested Master and Agent

What I Did I wanted to try Puppet without dedicating two full VMs. I ran a Puppet master and agent in separate Ubuntu Docker containers on my machine. Docker host commands work the same on Ubuntu and Arch. Installing Puppet Master Download the Ubuntu image: sudo docker pull ubuntu Create a container for Puppet master: sudo docker run --name puppet-master -it ubuntu exit Start the container: sudo docker start puppet-master Open the bash shell of the Puppet master container: ...

July 28, 2022 · 2 min · Saad

Creating My First Docker Container

What I Did Here After installing Docker, I wanted to run an actual Ubuntu container — not just hello-world. The steps inside this post are the same on Arch Linux and Ubuntu hosts. Only the Docker installation differs — see Docker on Arch Linux and Ubuntu for that part. Arch Linux (host) Make sure Docker is installed and running on your Arch machine first: sudo pacman -S docker sudo systemctl enable --now docker systemctl status docker Pull the Ubuntu image sudo docker pull ubuntu Create and enter a container sudo docker run --name my-container -it ubuntu What those flags mean: ...

July 27, 2022 · 2 min · Saad

Docker on Arch Linux and Ubuntu: How I Got It Running

Why I Started Using Docker I wanted a way to run apps without messing up my main system. Docker packs an app with everything it needs into a container — a small, isolated environment that shares my kernel but stays separate from everything else. If something breaks inside a container, I delete it and start over. No reinstalling the whole OS. Containers vs Images (Quick Version) Image — a read-only template (like a recipe) Container — a running instance of that image (like the actual dish you cooked) You build or pull an image once. You can spin up as many containers from it as you want. ...

July 26, 2022 · 2 min · Saad

GitHub CLI and Personal Access Tokens: What I Use Daily

Why I Bother With This I got tired of opening the browser every time I wanted to create a repo, check a PR, or trigger a workflow. GitHub CLI (gh) lets me do most of that from the terminal. Personal Access Tokens (PATs) are how Git authenticates when you push over HTTPS. This post covers both — how I generate a PAT and how I use gh day to day. ...

September 4, 2021 · 2 min · Saad