<?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>DEV Community: Syria-git</title>
    <description>The latest articles on DEV Community by Syria-git (@hamzasakr).</description>
    <link>https://dev.to/hamzasakr</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%2F3675114%2Fb9f014b2-08ac-4b5f-bbeb-b20495c1212e.png</url>
      <title>DEV Community: Syria-git</title>
      <link>https://dev.to/hamzasakr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hamzasakr"/>
    <language>en</language>
    <item>
      <title>DevOps Portfolio Project: Jenkins CI/CD Pipeline with Docker Dynamic Agents</title>
      <dc:creator>Syria-git</dc:creator>
      <pubDate>Tue, 23 Dec 2025 12:25:02 +0000</pubDate>
      <link>https://dev.to/hamzasakr/devops-portfolio-project-jenkins-cicd-pipeline-with-docker-dynamic-agents-hmn</link>
      <guid>https://dev.to/hamzasakr/devops-portfolio-project-jenkins-cicd-pipeline-with-docker-dynamic-agents-hmn</guid>
      <description>&lt;p&gt;A detailed walk-through of a portfolio-ready Jenkins CI/CD project using dynamic Docker build agents.&lt;br&gt;
Check out the full project on GitHub:(&lt;u&gt;&lt;a href="https://github.com/Syria-git/jenkins-docker-dynamic-agent" rel="noopener noreferrer"&gt;https://github.com/Syria-git/jenkins-docker-dynamic-agent&lt;/a&gt;&lt;/u&gt;)&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%2Ff52duene4ijxeyxpu3hu.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%2Ff52duene4ijxeyxpu3hu.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevOps Portfolio Project: Jenkins CI/CD Pipeline with Docker Dynamic Agents&lt;/p&gt;

&lt;p&gt;👉 GitHub Repository:&lt;br&gt;
&lt;a href="https://github.com/syria-git/jenkins-docker-dynamic-agent" rel="noopener noreferrer"&gt;https://github.com/syria-git/jenkins-docker-dynamic-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🚀 Project Overview&lt;/p&gt;

&lt;p&gt;This project demonstrates how to:&lt;/p&gt;

&lt;p&gt;Build a dynamic Docker agent per Jenkins run&lt;/p&gt;

&lt;p&gt;Run CI/CD pipelines using ephemeral infrastructure&lt;/p&gt;

&lt;p&gt;Deploy a simple web application automatically&lt;/p&gt;

&lt;p&gt;Keep the repository safe for public GitHub (no secrets, no hardcoded proxies)&lt;/p&gt;

&lt;p&gt;The goal is not application complexity, but CI/CD correctness and DevOps mindset.&lt;/p&gt;

&lt;p&gt;🧰 Tech Stack&lt;/p&gt;

&lt;p&gt;Jenkins (Declarative Pipeline)&lt;/p&gt;

&lt;p&gt;Docker (Dynamic Build Agents)&lt;/p&gt;

&lt;p&gt;Ubuntu 22.04&lt;/p&gt;

&lt;p&gt;HTML / CSS / JavaScript (sample app)&lt;/p&gt;

&lt;p&gt;🔁 CI/CD Workflow&lt;/p&gt;

&lt;p&gt;The pipeline follows this flow:&lt;/p&gt;

&lt;p&gt;GitHub → Jenkins → Docker Build Agent → Deploy → Cleanup&lt;/p&gt;

&lt;p&gt;Each Jenkins run:&lt;/p&gt;

&lt;p&gt;Builds a custom Docker image&lt;/p&gt;

&lt;p&gt;Starts a temporary container&lt;/p&gt;

&lt;p&gt;Deploys application files&lt;/p&gt;

&lt;p&gt;Cleans up all resources automatically&lt;/p&gt;

&lt;p&gt;This approach mirrors real enterprise CI/CD environments.&lt;/p&gt;

&lt;p&gt;📊 Pipeline Diagram&lt;/p&gt;

&lt;p&gt;(Diagram shows Jenkins creating a Docker-based agent per build, deploying the app, and cleaning up afterward.)&lt;/p&gt;

&lt;p&gt;🗂 Repository Structure&lt;br&gt;
.&lt;br&gt;
├── app/                 # Web application files&lt;br&gt;
├── ci/                  # Jenkinsfile &amp;amp; Dockerfile&lt;br&gt;
├── Makefile             # Optional local automation&lt;br&gt;
└── README.md&lt;/p&gt;

&lt;p&gt;Clear separation between:&lt;/p&gt;

&lt;p&gt;Application code&lt;/p&gt;

&lt;p&gt;CI/CD configuration&lt;/p&gt;

&lt;p&gt;Infrastructure logic&lt;/p&gt;

&lt;p&gt;🔐 Secure Proxy Handling (Enterprise Practice)&lt;/p&gt;

&lt;p&gt;This project is intentionally designed to be public-repository safe.&lt;/p&gt;

&lt;p&gt;❌ No proxy IPs&lt;br&gt;
❌ No credentials&lt;br&gt;
❌ No secrets in code&lt;/p&gt;

&lt;p&gt;✅ How it’s handled instead&lt;/p&gt;

&lt;p&gt;Proxy variables are configured directly in Jenkins:&lt;/p&gt;

&lt;p&gt;Job → Configure → Environment variables&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;HTTP_PROXY&lt;/p&gt;

&lt;p&gt;HTTPS_PROXY&lt;/p&gt;

&lt;p&gt;These values are:&lt;/p&gt;

&lt;p&gt;Injected at runtime&lt;/p&gt;

&lt;p&gt;Managed outside the repository&lt;/p&gt;

&lt;p&gt;Safe for enterprise and portfolio use&lt;/p&gt;

&lt;p&gt;This is exactly how real production pipelines handle network restrictions.&lt;/p&gt;

&lt;p&gt;🎯 Why This Project Matters&lt;/p&gt;

&lt;p&gt;Many CI/CD demos:&lt;/p&gt;

&lt;p&gt;Hardcode credentials&lt;/p&gt;

&lt;p&gt;Use static agents&lt;/p&gt;

&lt;p&gt;Ignore cleanup&lt;/p&gt;

&lt;p&gt;This project focuses on:&lt;/p&gt;

&lt;p&gt;Ephemeral infrastructure&lt;/p&gt;

&lt;p&gt;Security-first design&lt;/p&gt;

&lt;p&gt;Clean Git history&lt;/p&gt;

&lt;p&gt;Interview-ready explanations.&lt;/p&gt;

</description>
      <category>jenkins</category>
      <category>cicd</category>
      <category>devops</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
