Skip to content

Set up Quay.io image publishing pipeline #67

Description

@ricardozanini

Set up automated container image publishing to quay.io/kubesmarts using GitHub Actions. This pipeline will build and publish all logic-platform images (data-index variants and ingestion services) when version tags are pushed to the repository.

Image Build Strategy: Dockerfiles as the single source of truth. This replaces the current Jib-based approach used in E2E tests with explicit Dockerfiles for consistency between development, CI, and production deployments.

Acceptance Criteria

  • GitHub Actions workflow file created (.github/workflows/publish-images.yml)
  • Workflow triggers on tag push matching pattern v* (e.g., v1.0.0)
  • Workflow authenticates to quay.io using repository secrets (QUAY_USERNAME, QUAY_TOKEN)
  • Multi-architecture builds configured (amd64, arm64)
  • Images tagged with multiple tags:
    • latest - always points to most recent release
    • Full version - e.g., 1.0.0
    • Major.minor - e.g., 1.0
  • Workflow includes basic validation (pull published image and verify)
  • Documentation added to README for triggering releases

Technical Details

GitHub Secrets Required:

  • QUAY_USERNAME - Quay.io username/robot account
  • QUAY_TOKEN - Quay.io access token

Workflow Pattern:

on:
  push:
    tags:
      - 'v*'

Build Strategy:

  • Use docker/build-push-action@v5 for multi-platform builds (handles Dockerfiles natively)
  • Use docker/metadata-action@v5 for tag management
  • Build context: module directory containing Dockerfile
  • Build args: Pass Quarkus profile where needed

Workflow Pattern (per image):

- name: Build and push PostgreSQL variant
  uses: docker/build-push-action@v5
  with:
    context: ./data-index/data-index-service/data-index-service-postgresql
    file: ./data-index/data-index-service/data-index-service-postgresql/src/main/docker/Dockerfile.jvm
    platforms: linux/amd64,linux/arm64
    push: true
    tags: ${{ steps.meta.outputs.tags }}
    labels: ${{ steps.meta.outputs.labels }}

Reference Implementation:

Dependencies

None - this is the foundation for all image publishing

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions