Skip to content

Conversation

AhmadAddee
Copy link
Contributor

@AhmadAddee AhmadAddee commented Sep 19, 2025

Assignment Proposal

Title

CD in GitLab

Names and KTH ID

Deadline

  • Task 3

Category

  • Executable Tutorial

Description

This tutorial introduces users to the fundamentals of Continuous Integration and Continuous Delivery (CI/CD) using GitLab through a progressive scenario; starting with a simple pipeline, then extending it to more advanced real-world workflows.

  1. Step 1 - Basic CI/CD
    • Introduce a minimal .gitlab-ci.yml file.
    • Configure jobs to build and test a simple Dockerized application.
    • Show how every commit triggers a pipeline automatically.
  2. Step 2 - Branch and Environment Rules
    • Add rules for staging vs. production deployments.
    • Demonstrate conditional jobs (e.g., only: main for production)
  3. Step 3 - Multi-Stage Delivery with Approvals
    • Introduce sequential environments: build -> test -> staging -> production.
    • Use manual approvals or protected branches for production releases.
  4. Step 4 - Security & Quality Gates
    • Add jobs for litning, unit tests, and a container vulnerability scan.
    • Fail the pipeline if vulnerabilities or test errors are found.
  5. Step 5 - Visualization and Reflection
    • Show pipeline flow using GitLab's pipeline graph.
    • Discuss trade-offs: speed vs. safety, automation vs. manual control.

Following our tutorial, users will:

  • Understand how to set up .gitlab-ci.yml with multiple stages.
  • Learn how to deploy to different environments securely.
  • Gain hands-on practice with DevOps concepts: automation, quality gates, and safe releases.

Relevance

CI/CD is a key part of modern DevOps. It helps teams get quick feedback, lower the risk of failed releases, and deliver updates faster. GitLab's built-in CI/CD is popular across many industries because it makes development workflows easier to manage. In this tutorial, participants will learn how to set up and run GitLab pipelines and think about how automation affects both speed and reliability. Users will also see how CI/CD practices can be adapted to different teams and projects.

@ericcornelissen ericcornelissen self-assigned this Sep 21, 2025
@ericcornelissen
Copy link
Collaborator

Hey, your proposal overall looks good but it feels a bit on the simple side. Starting with a basic workflow makes sense, but building only towards branch/environment-dependent deployments seems a bit limited. Could you expand the difficulty of the tutorial (or argue for the current difficulty)?

@AhmadAddee
Copy link
Contributor Author

@ericcornelissen thank you for your feedback! Now we've xpanded the difficulty by adding multi-stage, approvals, and security scans to be considerred as integration with CD.

@ericcornelissen
Copy link
Collaborator

Thank you for updating the proposal, it looks good now. Just one remaining question, how are you planning to deliver the tutorial, through what platform (see grading criteria)?

@somaiyaabdulrahman
Copy link

We’re still considering the best option, but we’ll look into a tool called mybinder.org Binder and will most likely use it, since our goal is to make the tutorial as simple and accessible as possible for the users.

@ericcornelissen
Copy link
Collaborator

In that case, I can merge this if you want but just know that if you can't find a suitable platform you will fail this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants