CICD Tools

On-Prem & Web

  • Jenkins

  • Circle CI

Web Based

  • GitHub Actions

  • GitLab

Cloud Providers

  • AWS CodeBuild

  • Azure DevOps

  • Google Cloud Build


GitHub Actions

Free and Popular

Based on five concepts

  • Workflows - Automated processes that contain one or more logical jobs.

Entire to-do list.

  • Jobs - Tasks you command GitHub Action to execute.

It consists of steps that GitHub Actions will execute on a runner.

  • Events - Trigger the execution of the job.

on push / pull

on schedule

on workflow_dispatch (Manual Trigger)

  • Actions - Reusable commands that can be used in your config file.

https://github.com/features/actions

  • Runners - Remote computer that GitHub Actions uses to execute the jobs.

Github-Hosted Runners

  • ubuntu-latest

  • windows-latest

  • macos-latest

Self-Hosted Runners

  • Specific OS that Github does not offer.

  • Connection to a private network/environment.

  • To save costs for projects with high usage. (Enterprise plans are expensive)

YAML (Yet Another Markup Language)

  YAML is a human-friendly data serialization
  language for all programming languages.

https://learnxinyminutes.com/docs/yaml/

Sample

name: Multi-Event Workflow

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:
    inputs:
      manualParam:
        description: 'Input for manual triggers'
        required: false
        default: 'Default value'
  schedule:
    - cron: '0 0 * * *'  # Runs at 00:00 UTC every day

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.8'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Run tests
      run: |
        echo "Run your tests or scripts here."
        echo "Manual trigger parameter value: ${{ github.event.inputs.manualParam }}"

DEMO

https://github.com/gchandra10/cicd_calc.git

Multiple Runners Demo

https://github.com/gchandra10/cicd-multiple-runners-demo

Last updated