# GitHub Actions vs GitLab CI Pipeline Comparison This document outlines the key distinctions between GitHub Actions and GitLab CI pipelines in the OpenPipe project. ## GitHub Actions Located in `.github/workflows/`: ### 1. versions.yml - **Purpose**: Automated version management - **Trigger**: - Daily cron job at midnight UTC - Manual trigger via workflow_dispatch - **Key Features**: - Checks for new CRC (Code Ready Containers) releases - Updates version mappings across multiple files - Creates automated PRs for version updates - Uses GitHub CLI for release management ### 2. build_images.yml - **Purpose**: Container image building and publishing - **Trigger**: - Push to main/master branch (when build/\*\* files change) - Pull requests (when build/\*\* files change) - Manual trigger - **Key Features**: - Matrix strategy for multiple OpenShift versions - Uses Buildah for container builds - Pushes to Quay.io registry - Simpler configuration focused on build/push workflow ## GitLab CI (.gitlab-ci.yml) Located in `build/.gitlab-ci.yml`: ### Key Characteristics - **Comprehensive Configuration**: - Extensive variable definitions for OpenShift configuration - Detailed CRC (Code Ready Containers) settings - Cloud provider configurations (AWS/GCP/OpenStack) ### Pipeline Stages 1. prepare-images - Manual trigger for building container images - Uses Podman for container builds - Similar matrix strategy for OpenShift versions 2. setup - Local OpenShift deployment configuration - Handles system services (libvirt, dbus) - CRC setup and configuration 3. setup-cloud - Separate jobs for different cloud providers: - AWS - GCP - OpenStack - Each with specific cloud resource management 4. test - Placeholder stage for testing ## Key Differences 1. **Scope**: - GitHub Actions: Focused on version management and container builds - GitLab CI: Broader scope including local and cloud deployments 2. **Configuration Style**: - GitHub Actions: Modular, split into specific workflow files - GitLab CI: Single comprehensive configuration file 3. **Container Tools**: - GitHub Actions: Uses Buildah - GitLab CI: Uses Podman 4. **Cloud Integration**: - GitHub Actions: No direct cloud deployment configuration - GitLab CI: Built-in support for multiple cloud providers 5. **Variables Management**: - GitHub Actions: Minimal, focused on registry credentials - GitLab CI: Extensive variable configurations for various components 6. **Deployment Options**: - GitHub Actions: Primarily focused on container image management - GitLab CI: Supports both local and cloud deployment scenarios ## Use Cases - **GitHub Actions**: Best for: - Automated version updates - Container image builds - Simple, focused workflows - **GitLab CI**: Best for: - Complex deployment scenarios - Cloud provider integrations - Local OpenShift development - Comprehensive environment configurations