Skip to content

Latest commit

 

History

History
257 lines (196 loc) · 4.85 KB

File metadata and controls

257 lines (196 loc) · 4.85 KB

CI/CD Platform Comparison

Overview

Quick comparison of all supported CI/CD platforms with unified deployment parameters.


Unified Deployment Parameters

All platforms support the same deployment configuration:

Parameter Description Options
deployment_type Where to deploy local, cloud
environment Target environment dev, staging, production
services Services to deploy all, backend, frontend, admin, gateway, database
cluster_type Local cluster type docker-compose, minikube, kind, k3d, docker-desktop
use_gitops Use ArgoCD true, false

Platform Comparison

GitHub Actions

File: .github/workflows/ci-cd.yml

Configuration:

workflow_dispatch:
  inputs:
    deployment_type:
      type: choice
      options: [local, cloud]

Trigger:

gh workflow run ci-cd.yml \
  -f deployment_type=cloud \
  -f environment=production \
  -f services=all \
  -f use_gitops=true

Pros:

  • ✅ Easy setup
  • ✅ Free for public repos
  • ✅ Great UI
  • ✅ Integrated with GitHub

Cons:

  • ❌ Limited to GitHub

GitLab CI

File: .gitlab-ci.yml

Configuration:

variables:
  DEPLOYMENT_TYPE: "cloud"
  ENVIRONMENT: "production"
  SERVICES: "all"
  USE_GITOPS: "false"

Trigger:

# Set via CI/CD Variables in GitLab UI
# Then push to trigger
git push origin main

Pros:

  • ✅ Built-in registry
  • ✅ Coverage visualization
  • ✅ Free tier available

Cons:

  • ❌ Less flexible parameter input

Jenkins

File: Jenkinsfile

Configuration:

parameters {
    choice(name: 'DEPLOYMENT_TYPE', choices: ['local', 'cloud'])
    choice(name: 'ENVIRONMENT', choices: ['dev', 'staging', 'production'])
    choice(name: 'SERVICES', choices: ['all', 'backend', 'frontend'])
    booleanParam(name: 'USE_GITOPS', defaultValue: false)
}

Trigger:

  • Click Build with Parameters
  • Select from dropdowns
  • Click Build

Pros:

  • ✅ Self-hosted
  • ✅ Full control
  • ✅ Extensive plugins

Cons:

  • ❌ Requires setup
  • ❌ Maintenance overhead

CircleCI

File: .circleci/config.yml

Configuration:

parameters:
  deployment_type:
    type: enum
    enum: ["local", "cloud"]
  environment:
    type: enum
    enum: ["dev", "staging", "production"]

Trigger:

# Via API
curl -X POST https://circleci.com/api/v2/project/gh/ORG/REPO/pipeline \
  -d '{"parameters": {"deployment_type": "cloud"}}'

Pros:

  • ✅ Fast builds
  • ✅ Docker layer caching
  • ✅ Good UI

Cons:

  • ❌ Limited free tier
  • ❌ API-based parameter input

ArgoCD (GitOps)

File: argocd/applications.yaml

Configuration:

spec:
  source:
    targetRevision: main  # or develop
    path: k8s/overlays/production

Trigger:

argocd app sync auraweb-production

Pros:

  • ✅ GitOps workflow
  • ✅ Self-healing
  • ✅ Automated sync
  • ✅ Rollback capability

Cons:

  • ❌ Kubernetes only
  • ❌ No local deployment

Feature Matrix

Feature GitHub GitLab Jenkins CircleCI ArgoCD
Unified Parameters ⚠️
Local Deployment
Cloud Deployment
GitOps Support
Service Selection ⚠️
Manual Approval ⚠️
Self-Hosted
Free Tier ⚠️

Recommendation by Use Case

Small Team / Startup

Recommended: GitHub Actions or GitLab CI

  • Easy setup
  • Free tier
  • Good documentation

Enterprise

Recommended: Jenkins or ArgoCD

  • Self-hosted
  • Full control
  • Advanced features

Kubernetes-Native

Recommended: ArgoCD

  • GitOps workflow
  • Auto-sync
  • Self-healing

Multi-Cloud

Recommended: Jenkins

  • Platform agnostic
  • Extensive plugins
  • Flexible

Migration Path

From GitHub Actions to GitLab CI

  1. Copy workflow structure
  2. Adjust syntax (YAML differences)
  3. Configure variables
  4. Test pipeline

From Jenkins to ArgoCD

  1. Keep Jenkins for CI
  2. Add ArgoCD for CD
  3. Separate build and deploy
  4. Implement GitOps

From CircleCI to GitHub Actions

  1. Convert orbs to actions
  2. Adjust workflow syntax
  3. Migrate secrets
  4. Test thoroughly

Next Steps

  1. Choose platform based on your needs
  2. Follow platform guide for setup
  3. Configure parameters for your environment
  4. Test deployment with dev environment
  5. Deploy to production with confidence

All Platforms: ✅ Production Ready
Unified Parameters: ✅ Supported Across All Platforms
Documentation: Complete