generateGithubActionsDocker static method

String generateGithubActionsDocker(
  1. String projectName
)

Implementation

static String generateGithubActionsDocker(String projectName) {
  return '''
name: Docker Build and Deploy

on:
push:
  branches: [ main, develop ]
pull_request:
  branches: [ main ]

env:
REGISTRY: ghcr.io
IMAGE_NAME: \${{ github.repository }}

jobs:
build:
  runs-on: ubuntu-latest
  permissions:
    contents: read
    packages: write

  steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v3

    - name: Log in to Container Registry
      uses: docker/login-action@v3
      with:
        registry: \${{ env.REGISTRY }}
        username: \${{ github.actor }}
        password: \${{ secrets.GITHUB_TOKEN }}

    - name: Extract metadata
      id: meta
      uses: docker/metadata-action@v5
      with:
        images: \${{ env.REGISTRY }}/\${{ env.IMAGE_NAME }}
        tags: |
          type=ref,event=branch
          type=ref,event=pr
          type=semver,pattern={{version}}
          type=semver,pattern={{major}}.{{minor}}
          type=sha

    - name: Build and push Docker image
      uses: docker/build-push-action@v5
      with:
        context: .
        push: true
        tags: \${{ steps.meta.outputs.tags }}
        labels: \${{ steps.meta.outputs.labels }}
        cache-from: type=gha
        cache-to: type=gha,mode=max

deploy:
  needs: build
  runs-on: ubuntu-latest
  if: github.ref == 'refs/heads/main'

  steps:
    - name: Deploy to production
      run: |
        echo "Add your deployment commands here"
        # Example: SSH to server and pull/restart containers
        # ssh user@server "cd /app && docker-compose pull && docker-compose up -d"
''';
}