<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mumtaz Jahan</title>
    <description>The latest articles on Forem by Mumtaz Jahan (@mumtaz2029).</description>
    <link>https://forem.com/mumtaz2029</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3885280%2F719c10f5-af77-4250-9216-5dadfef8503a.jpeg</url>
      <title>Forem: Mumtaz Jahan</title>
      <link>https://forem.com/mumtaz2029</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mumtaz2029"/>
    <language>en</language>
    <item>
      <title>How I Fixed Jenkins Built-In Node Offline Issue on EC2</title>
      <dc:creator>Mumtaz Jahan</dc:creator>
      <pubDate>Mon, 20 Apr 2026 11:08:28 +0000</pubDate>
      <link>https://forem.com/mumtaz2029/how-i-fixed-jenkins-built-in-node-offline-issue-on-ec2-m79</link>
      <guid>https://forem.com/mumtaz2029/how-i-fixed-jenkins-built-in-node-offline-issue-on-ec2-m79</guid>
      <description>&lt;h2&gt;
  
  
  Problem: Jenkins Built-In Node Showing Offline on EC2
&lt;/h2&gt;

&lt;p&gt;If you have ever set up Jenkins on an AWS EC2 instance and seen your Built-In Node showing &lt;strong&gt;offline&lt;/strong&gt; with builds not running — this post is for you!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdlpf34pskcxsvcipejg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdlpf34pskcxsvcipejg.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is exactly what happened, why it happened, and how I fixed it step by step.&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding the Warning
&lt;/h2&gt;

&lt;p&gt;When I clicked on the Built-In Node I saw this error:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Disk space is below threshold of 1.00 GiB. Only 951.90 MiB out of 956.65 MiB left on /tmp.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmf9t7i4grmvve8zqo8pb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmf9t7i4grmvve8zqo8pb.png" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jenkins monitors your server's system resources constantly. It requires:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;Minimum Required&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free Disk Space&lt;/td&gt;
&lt;td&gt;≥ 1 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free Temp Space &lt;code&gt;/tmp&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;≥ 1 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free Swap Space&lt;/td&gt;
&lt;td&gt;&amp;gt; 0 B&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In my case the checks showed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Free Disk Space: 22.26 GiB — perfectly fine&lt;/li&gt;
&lt;li&gt; Free Temp Space &lt;code&gt;/tmp&lt;/code&gt;: 951.90 MiB — &lt;strong&gt;below Jenkins threshold&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; Free Swap Space: 0 B — &lt;strong&gt;no swap at all&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;/tmp&lt;/code&gt; partition was only &lt;strong&gt;956 MiB total&lt;/strong&gt; — just under Jenkins' 1 GB requirement. So Jenkins automatically took the Built-In Node &lt;strong&gt;offline&lt;/strong&gt; and refused to run any builds.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fix Option 1 — Increase &lt;code&gt;/tmp&lt;/code&gt; Size (Best for EC2)
&lt;/h2&gt;

&lt;p&gt;This is the permanent fix. We increase the &lt;code&gt;/tmp&lt;/code&gt; mount size by editing the filesystem configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Open the fstab file&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/fstab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Add this line at the bottom&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;tmpfs /tmp tmpfs defaults,size&lt;span class="o"&gt;=&lt;/span&gt;2G 0 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and exit (&lt;code&gt;Ctrl+X&lt;/code&gt; → &lt;code&gt;Y&lt;/code&gt; → &lt;code&gt;Enter&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Remount /tmp without rebooting&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;mount &lt;span class="nt"&gt;-o&lt;/span&gt; remount /tmp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Verify the new size&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; /tmp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should now see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Filesystem   Size   Used   Avail   Use%   Mounted on
tmpfs        2.0G   4.8M   2.0G    1%     /tmp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4zoaepnkb3qft9ytfbq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz4zoaepnkb3qft9ytfbq.png" alt=" " width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/tmp&lt;/code&gt; is now &lt;strong&gt;2 GB&lt;/strong&gt; — well above Jenkins' 1 GB threshold! ✅&lt;/p&gt;




&lt;h2&gt;
  
  
  Fix Option 2 — Quick Jenkins Restart (Temporary Fix)
&lt;/h2&gt;

&lt;p&gt;If you just need Jenkins back online quickly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; /tmp/&lt;span class="k"&gt;*&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This clears temp files and forces Jenkins to recheck the threshold. Sometimes this is enough to bring the node back online temporarily.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus Fix — Add Swap Space (Important for t2.micro)
&lt;/h2&gt;

&lt;p&gt;On &lt;strong&gt;t2.micro&lt;/strong&gt; EC2 instances, swap is 0 B by default. Jenkins warns about this too. Here is how to create a 1 GB swap file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a 1GB swap file&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;fallocate &lt;span class="nt"&gt;-l&lt;/span&gt; 1G /swapfile

&lt;span class="c"&gt;# Set correct permissions&lt;/span&gt;
&lt;span class="nb"&gt;sudo chmod &lt;/span&gt;600 /swapfile

&lt;span class="c"&gt;# Set up swap space&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mkswap /swapfile

&lt;span class="c"&gt;# Enable the swap&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;swapon /swapfile

&lt;span class="c"&gt;# Verify&lt;/span&gt;
free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Result
&lt;/h2&gt;

&lt;p&gt;After applying Fix Option 1 and adding swap space the node came back online immediately!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1me8y5g6c5hftzqxxl7m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1me8y5g6c5hftzqxxl7m.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built-In Node came back &lt;strong&gt;Online&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Jenkins disk space warning disappeared &lt;/li&gt;
&lt;li&gt;Builds started running immediately &lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;t2.micro has very limited resources&lt;/strong&gt; — always check &lt;code&gt;/tmp&lt;/code&gt; size when setting up Jenkins on a free tier EC2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never ignore Jenkins resource warnings&lt;/strong&gt; — they directly affect whether your node stays online.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix Option 1 is permanent&lt;/strong&gt;, Fix Option 2 is temporary. Always go with Option 1 for a stable setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Always add swap on t2.micro&lt;/strong&gt; — it prevents a lot of memory-related Jenkins issues down the line.&lt;/p&gt;




&lt;p&gt;*Setting up Jenkins on EC2? Drop your questions in the comments *&lt;/p&gt;




</description>
      <category>jenkins</category>
      <category>devops</category>
      <category>aws</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Git Commands Every DevOps Engineer Must Know</title>
      <dc:creator>Mumtaz Jahan</dc:creator>
      <pubDate>Mon, 20 Apr 2026 03:23:56 +0000</pubDate>
      <link>https://forem.com/mumtaz2029/git-commands-every-devops-engineer-must-know-5c09</link>
      <guid>https://forem.com/mumtaz2029/git-commands-every-devops-engineer-must-know-5c09</guid>
      <description>&lt;h2&gt;
  
  
  Git Commands Every DevOps Engineer Must Know
&lt;/h2&gt;

&lt;p&gt;Git is not just a version control tool — it's your &lt;strong&gt;daily survival kit&lt;/strong&gt; as a DevOps engineer. Whether you're managing pipelines, fixing production issues, or collaborating with teams, these commands will save you every single day.&lt;/p&gt;

&lt;p&gt;Let's break it down section by section.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Initial Setup — Configure Git &amp;amp; Start Your Project
&lt;/h2&gt;

&lt;p&gt;Before anything else, set up Git properly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set your global username&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;

&lt;span class="c"&gt;# Set your global email&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"your@email.com"&lt;/span&gt;

&lt;span class="c"&gt;# Initialize a new Git repository&lt;/span&gt;
git init

&lt;span class="c"&gt;# Clone an existing repository&lt;/span&gt;
git clone &amp;lt;repo-url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Start every project the right way — proper config avoids identity issues in commits later.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Daily Git Flow — Your Everyday DevOps Cycle
&lt;/h2&gt;

&lt;p&gt;This is the cycle you'll repeat every single day:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check the status of your changes&lt;/span&gt;
git status

&lt;span class="c"&gt;# Stage all changes to be committed&lt;/span&gt;
git add &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Commit your changes with a message&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"your message here"&lt;/span&gt;

&lt;span class="c"&gt;# Push changes to remote repository&lt;/span&gt;
git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Practice it. Automate it. Master it.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Branching Strategy — Work Smarter in CI/CD &amp;amp; Teamwork
&lt;/h2&gt;

&lt;p&gt;Branching is essential for clean CI/CD pipelines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# List all branches in your repository&lt;/span&gt;
git branch

&lt;span class="c"&gt;# Create a new branch and switch to it&lt;/span&gt;
git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; feature-branch

&lt;span class="c"&gt;# Switch to an existing branch&lt;/span&gt;
git switch branch-name

&lt;span class="c"&gt;# Merge changes from another branch&lt;/span&gt;
git merge branch-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Always keep your &lt;code&gt;main&lt;/code&gt; branch &lt;strong&gt;clean and stable&lt;/strong&gt;. Never push untested code directly to main.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Sync With Remote — Keep Your Local Repo Up to Date
&lt;/h2&gt;

&lt;p&gt;Always sync before you push:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Fetch and merge changes from remote to local&lt;/span&gt;
git pull

&lt;span class="c"&gt;# Fetch changes from remote (without merging)&lt;/span&gt;
git fetch

&lt;span class="c"&gt;# Show remote repositories and their URLs&lt;/span&gt;
git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Always &lt;code&gt;git pull&lt;/code&gt; before you &lt;code&gt;git push&lt;/code&gt; — it helps you avoid conflicts and ensures successful deployments.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Debug Like a Pro — Inspect History, Changes &amp;amp; Code
&lt;/h2&gt;

&lt;p&gt;When something breaks in production, these are your best friends:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Show commit history&lt;/span&gt;
git log

&lt;span class="c"&gt;# View changes between working tree, staging or commits&lt;/span&gt;
git diff

&lt;span class="c"&gt;# Show details of a specific commit&lt;/span&gt;
git show &amp;lt;commit-id&amp;gt;

&lt;span class="c"&gt;# See who changed each line and why&lt;/span&gt;
git blame &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; &lt;code&gt;git blame&lt;/code&gt; helps you find who broke production 👀 — use it wisely!&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Undo &amp;amp; Fix — Life Saver Commands
&lt;/h2&gt;

&lt;p&gt;Mistakes happen. Fix them like a pro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Undo last commit, keep changes staged&lt;/span&gt;
git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1

&lt;span class="c"&gt;# Undo last commit and discard all changes (Use with caution!)&lt;/span&gt;
git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD~1

&lt;span class="c"&gt;# Safely undo changes by creating a new commit (great for shared repos)&lt;/span&gt;
git revert &amp;lt;commit-id&amp;gt;

&lt;span class="c"&gt;# Temporarily save changes and clean your working directory&lt;/span&gt;
git stash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Use &lt;code&gt;git revert&lt;/code&gt; over &lt;code&gt;git reset --hard&lt;/code&gt; in shared/production repos — it's safer and keeps history clean.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Bonus — Extra Power Commands
&lt;/h2&gt;

&lt;p&gt;Level up your Git game:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a tag for a specific version&lt;/span&gt;
git tag &lt;span class="nt"&gt;-a&lt;/span&gt; v1.0 &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"version 1.0"&lt;/span&gt;

&lt;span class="c"&gt;# Push a specific tag to remote&lt;/span&gt;
git push origin v1.0

&lt;span class="c"&gt;# Apply a specific commit from another branch&lt;/span&gt;
git cherry-pick &amp;lt;commit-id&amp;gt;

&lt;span class="c"&gt;# Check repository integrity and find issues&lt;/span&gt;
git fsck &lt;span class="nt"&gt;--full&lt;/span&gt;

&lt;span class="c"&gt;# Remove untracked files and directories&lt;/span&gt;
git clean &lt;span class="nt"&gt;-fd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Master these commands and you're ready to tackle any DevOps workflow with confidence!&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Reference Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Check current changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sync from remote&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git stash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Save work temporarily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git revert&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Safely undo in shared repos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git blame&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Find who changed what&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git cherry-pick&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Apply specific commits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git tag&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Version your releases&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Git is the backbone of every DevOps workflow. The engineers who know these commands deeply don't just push code — they &lt;strong&gt;ship with confidence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Save this post for your next deployment! &lt;/p&gt;




&lt;p&gt;*Which Git command has saved you the most in production? Drop it in the comments *&lt;/p&gt;




</description>
      <category>git</category>
      <category>productivity</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>DevOps Scenario Interview Question: Deployment Failed in Production</title>
      <dc:creator>Mumtaz Jahan</dc:creator>
      <pubDate>Sat, 18 Apr 2026 14:11:02 +0000</pubDate>
      <link>https://forem.com/mumtaz2029/devops-scenario-interview-question-deployment-failed-in-production-2bii</link>
      <guid>https://forem.com/mumtaz2029/devops-scenario-interview-question-deployment-failed-in-production-2bii</guid>
      <description>&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;devops&lt;/code&gt; &lt;code&gt;kubernetes&lt;/code&gt; &lt;code&gt;cicd&lt;/code&gt; &lt;code&gt;career&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Scenario: Your Deployment Failed in Production. What Steps Will You Take?
&lt;/h2&gt;

&lt;p&gt;This is one of the most common &lt;strong&gt;real-world scenario questions&lt;/strong&gt; asked in DevOps interviews. Interviewers don't want textbook answers — they want to know how you think under pressure.&lt;/p&gt;

&lt;p&gt;Here's the complete answer framework.&lt;/p&gt;




&lt;h2&gt;
  
  
  Answer: Step-by-Step Approach
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Check CI/CD Pipeline Logs
&lt;/h3&gt;

&lt;p&gt;First thing — don't guess, &lt;strong&gt;read the logs&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# For Jenkins&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /var/log/jenkins/jenkins.log

&lt;span class="c"&gt;# For GitHub Actions — check the Actions tab in your repo&lt;/span&gt;

&lt;span class="c"&gt;# For GitLab CI&lt;/span&gt;
gitlab-ci logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The pipeline log tells you exactly &lt;strong&gt;where&lt;/strong&gt; it broke.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Identify the Failed Stage (Build / Test / Deploy)
&lt;/h3&gt;

&lt;p&gt;Every pipeline has stages. Narrow it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build failed?&lt;/strong&gt; → Dependency issue, Dockerfile error, compilation error&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test failed?&lt;/strong&gt; → A test caught a regression before it hit production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy failed?&lt;/strong&gt; → Kubernetes issue, wrong image tag, resource limits, misconfigured secrets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Knowing the stage cuts your debugging time in half.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Verify Configuration Changes
&lt;/h3&gt;

&lt;p&gt;Check what changed before the failure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check recent git commits&lt;/span&gt;
git log &lt;span class="nt"&gt;--oneline&lt;/span&gt; &lt;span class="nt"&gt;-10&lt;/span&gt;

&lt;span class="c"&gt;# Check Kubernetes config changes&lt;/span&gt;
kubectl describe deployment my-app

&lt;span class="c"&gt;# Check if secrets/configmaps were updated&lt;/span&gt;
kubectl get configmap my-app-config &lt;span class="nt"&gt;-o&lt;/span&gt; yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most production failures trace back to a &lt;strong&gt;config change&lt;/strong&gt; someone forgot to mention.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Rollback to Previous Stable Version
&lt;/h3&gt;

&lt;p&gt;Don't try to fix forward when production is down. &lt;strong&gt;Rollback first, fix later.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Kubernetes rollback&lt;/span&gt;
kubectl rollout undo deployment/my-app

&lt;span class="c"&gt;# Verify rollback status&lt;/span&gt;
kubectl rollout status deployment/my-app

&lt;span class="c"&gt;# Check rollout history&lt;/span&gt;
kubectl rollout &lt;span class="nb"&gt;history &lt;/span&gt;deployment/my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This restores service immediately while you investigate the root cause safely.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Fix the Issue and Redeploy
&lt;/h3&gt;

&lt;p&gt;Once production is stable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reproduce the issue in staging&lt;/li&gt;
&lt;li&gt;Apply the fix&lt;/li&gt;
&lt;li&gt;Test thoroughly&lt;/li&gt;
&lt;li&gt;Redeploy with the corrected version
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nb"&gt;set &lt;/span&gt;image deployment/my-app my-app&lt;span class="o"&gt;=&lt;/span&gt;my-image:v2.1-fixed
kubectl rollout status deployment/my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Pro Tip
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Always maintain versioned Docker images&lt;/strong&gt; — never use &lt;code&gt;latest&lt;/code&gt; in production.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Bad&lt;/span&gt;
&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-app:latest&lt;/span&gt;

&lt;span class="c1"&gt;# Good&lt;/span&gt;
&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-app:v2.0.1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without versioned images, you can't rollback. Tag every release.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus: What Interviewers Are Really Looking For
&lt;/h2&gt;

&lt;p&gt;They want to see that you: don't panic, prioritize restoring service over finding blame, think in structured steps, and know the actual commands — not just theory.&lt;/p&gt;




&lt;p&gt;*Preparing for a DevOps interview? Drop your toughest scenario question in the comments *&lt;/p&gt;




</description>
      <category>career</category>
      <category>cicd</category>
      <category>devops</category>
      <category>interview</category>
    </item>
    <item>
      <title>How to Fixed a Kubernetes CrashLoopBackOff in Production</title>
      <dc:creator>Mumtaz Jahan</dc:creator>
      <pubDate>Fri, 17 Apr 2026 23:55:42 +0000</pubDate>
      <link>https://forem.com/mumtaz2029/how-to-fixed-a-kubernetes-crashloopbackoff-in-production-232f</link>
      <guid>https://forem.com/mumtaz2029/how-to-fixed-a-kubernetes-crashloopbackoff-in-production-232f</guid>
      <description>&lt;p&gt;&lt;em&gt;Tags:&lt;/em&gt; &lt;code&gt;kubernetes&lt;/code&gt; &lt;code&gt;devops&lt;/code&gt; &lt;code&gt;debugging&lt;/code&gt; &lt;code&gt;cloud&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem: Application Was DOWN in Kubernetes
&lt;/h2&gt;

&lt;p&gt;One of the most stressful moments in DevOps — you check your monitoring dashboard and your application is completely &lt;strong&gt;DOWN&lt;/strong&gt; in Kubernetes. No graceful degradation. Just... down.&lt;/p&gt;

&lt;p&gt;Here's exactly how I diagnosed and fixed it in under an hour.&lt;/p&gt;




&lt;h2&gt;
  
  
  Issue Found: Pod Was in CrashLoopBackOff
&lt;/h2&gt;

&lt;p&gt;Running &lt;code&gt;kubectl get pods&lt;/code&gt; revealed the culprit immediately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;NAME                        READY   STATUS             RESTARTS   AGE
my-app-7d9f8b6c4-xk2pq     0/1     CrashLoopBackOff   8          20m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;CrashLoopBackOff&lt;/code&gt; means Kubernetes is repeatedly trying to start your container, it crashes, and Kubernetes backs off with increasing wait times before retrying. Something inside the container was causing it to exit immediately on startup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Debug Steps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Checked Logs (&lt;code&gt;kubectl logs&lt;/code&gt;)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl logs my-app-7d9f8b6c4-xk2pq &lt;span class="nt"&gt;--previous&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--previous&lt;/code&gt; flag is crucial here — it lets you see logs from the &lt;em&gt;crashed&lt;/em&gt; container, not the current (possibly empty) one. The logs showed repeated connection errors on startup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Checked Config
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe pod my-app-7d9f8b6c4-xk2pq
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I inspected the environment variables and ConfigMaps attached to the pod. The &lt;code&gt;describe&lt;/code&gt; command is a goldmine — it shows events, resource limits, volume mounts, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Found DB Connection Issue
&lt;/h3&gt;

&lt;p&gt;The logs made it clear: the app was trying to connect to the database using an &lt;strong&gt;incorrect connection string&lt;/strong&gt;. The host value in the environment variable was pointing to a stale endpoint. The app would crash immediately on boot since it couldn't reach the DB.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fix Applied
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Corrected Environment Variables
&lt;/h3&gt;

&lt;p&gt;Updated the Kubernetes secret/configmap with the correct database host:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl edit secret my-app-db-secret
&lt;span class="c"&gt;# or&lt;/span&gt;
kubectl &lt;span class="nb"&gt;set env &lt;/span&gt;deployment/my-app &lt;span class="nv"&gt;DB_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;correct-db-host.internal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Restarted the Deployment
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl rollout restart deployment/my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then watched the rollout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl rollout status deployment/my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎉 Result
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Application UP
 Issue resolved
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The pods came up healthy, readiness probes passed, and traffic started flowing again.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Always check logs with &lt;code&gt;--previous&lt;/code&gt;&lt;/strong&gt; — the live container may have no logs if it crashes before writing any.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;kubectl describe pod&lt;/code&gt;&lt;/strong&gt; is your best friend for seeing the full picture: events, env vars, resource pressure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CrashLoopBackOff is almost always one of:&lt;/strong&gt; bad env vars/secrets, missing config, OOM kill, or a bug triggered at startup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;kubectl rollout restart&lt;/code&gt;&lt;/strong&gt; is safer than deleting pods manually — it does a rolling restart with zero downtime.&lt;/p&gt;




&lt;p&gt;*Hit a similar issue? Drop your debugging story in the comments *&lt;/p&gt;




</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>sre</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
