Module 4: CI/CD Pipelines

Automating the software delivery process.

4.1 CI/CD Concepts

Continuous Integration (CI): The practice of merging all developers' working copies to a shared mainline several times a day.

Continuous Delivery (CD): An approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time.

4.2 GitHub Actions

GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub.

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Run a one-line script
      run: echo Hello, world!

4.3 Jenkins & GitLab CI

Jenkins: The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.

GitLab CI: A tool built into GitLab for software development through the continuous methodologies.

4.4 GitOps (ArgoCD)

GitOps is a way of implementing Continuous Deployment for cloud native applications. It focuses on a developer-centric experience when operating infrastructure, by using tools developers are already familiar with, including Git and Continuous Deployment tools.

🎯 Practical Exercise

Create a GitHub Action workflow that runs tests on every push to the repository. If possible, add a step to build a Docker image.