Trainings, Workshops & Seminars

Code to Cloud: The Ultimate CI/CD Workshop

by Mohamed A. Abdisamad (NIRA), Mr Omar Hassan (NIRA)

Africa/Mogadishu
Room 401 (Jazeera University Main Campus)

Room 401

Jazeera University Main Campus

Mogadishu, Somalia
Description

Tutorial Overview

Code to Cloud is an intensive two-hour practical session designed to demystify the path from local development to production deployment. While DevOps is changing the way software is delivered, many developers still wrestle with manual FTP uploads, SSH keys, and server restarts.

This tutorial adopts a "zero manual deployments" philosophy. It follows a hands-on, project-based approach where participants will take a raw application, containerize it, automate the testing, and watch it go live on a custom Linux server secured with SSL. By the end of this session, participants won't just have an app; they will have built a fully automated delivery machine where the system handles the rest.

Tutorial Objectives

By the end of this tutorial, participants will be able to:

  • Containerize Applications: Wrap a raw application in Docker to eliminate "it works on my machine" issues.
  • Build Automated Pipelines: Write GitHub Actions workflows to trigger builds automatically on every code push.
  • Manage Artifacts: Set up and utilize a private Docker Registry for hosting secure images.
  • Deploy to Production: Configure Nginx on a custom Linux server as a high-performance reverse proxy.
  • Implement Automated Security: Integrate Let's Encrypt to auto-generate SSL/TLS certificates.
  • Execute Continuous Deployment: Configure runners to securely pull new images and update the live site without manual intervention.

Target Audience

This session is ideal for:

  • Developers tired of manual deployment checklists.
  • DevOps Beginners who want to understand the "black box" of CI/CD.
  • Team Leads looking to modernize their team's workflow.
  • System Administrators aiming to modernize their skills with containerization.
  • Students & Graduates looking to gain industry-standard deployment skills.

Prerequisites

To ensure a smooth 2-hour sprint, participants should have:

  1. Version Control: A GitHub account and basic familiarity with Git commands (clone, commit, push).
  2. Command Line Basics: Comfort with using a terminal/shell.
  3. Linux Fundamentals: Basic understanding of Linux environments (as the production server is Linux-based).
  4. Networking Basics: General understanding of IP addresses and HTTP/HTTPS.

Tutorial Structure & Content Outline (2 Hours)

Session 1: Containerization & The Registry (08:00 - 08:45)

  • Introduction to Containers: Understanding why we use Docker and how it differs from virtual machines.
  • Dockerizing the App: Hands-on creation of a Dockerfile. We will take a sample application and wrap it in a container to ensure consistency across environments.
  • The Registry: Setting up a secure Docker Registry. Participants will learn how to tag and push their build artifacts to a private vault, ready for deployment.

Session 2: The CI Pipeline & Automation (08:45 - 09:20)

  • GitHub Actions Workflow: Writing the YAML configuration to serve as the brain of our operation.
  • Triggering Builds: Configuring the pipeline to trigger automatically on every push to the main branch.
  • Automated Testing: Implementing the safety net. We will configure the pipeline to run tests before building; if tests fail, the pipeline stops, ensuring bad code never reaches production.

Session 3: Continuous Deployment (09:20 - 09:40)

  • Server Preparation: Configuring Nginx on a custom Linux VPS to serve traffic and act as a reverse proxy.
  • The Handshake: Configuring the GitHub runner (Self-Hosted or SSH) to communicate with the production server.
  • Automated Rollout: Scripting the logic to pull the new image and restart the container on the live server automatically.

Session 4: Security & The "Magic Moment" (09:40 - 10:00)

  • HTTPS Everywhere: Integrating Let's Encrypt to automatically generate and renew SSL certificates for the application.
  • Live Demo: The final test. Participants will change a line of code, push to GitHub, and watch the live site update in real-time without touching the server.

Learning Outcomes

After the tutorial, participants will:

  • Possess a production-grade CI/CD template they can apply to future projects.
  • Understand the full lifecycle of a code change from local environment to live server.
  • Be able to set up automated testing gates to improve code quality.

Have the confidence to stop deploying manually and start shipping code faster and more securely.