Skip to content
This repository was archived by the owner on Apr 15, 2026. It is now read-only.
This repository was archived by the owner on Apr 15, 2026. It is now read-only.

GitOps Image Pipeline Implementation #24

Description

@jmgilman

Overview

Implement a GitOps-driven pipeline that manages source images (ISOs, raw, qcow2) and distributes them to the lab via NAS/NFS.

Design Document: docs/design/image-pipeline.md

Goals

  • Input: Declarative YAML configuration defining image sources, validation rules, and optional file updates
  • Output: Validated images in iDrive e2 (S3-compatible), synced to Synology NAS via Cloud Sync
  • Key Constraint: Downstream builds (Packer) are triggered via Git changes, not direct invocation

Architecture

Source Images → labctl images sync → iDrive e2 → Synology Cloud Sync → NAS
                      ↓
               updateFile changes → PR → Mergify auto-merge
                                              ↓
                                    Packer workflow triggered
                                              ↓
                                    Built image → e2 → NAS

Components

  1. labctl images CLI - Go CLI tool for image management (sync, validate, list, prune, upload)
  2. GitHub Actions workflows - CI/CD for sync and Packer builds
  3. Mergify configuration - Auto-merge bot PRs after CI passes
  4. SOPS-encrypted credentials - Secure storage for e2 and SSH credentials

Sub-issues

This epic is broken into 4 sequential issues:

  1. CLI foundation - Go module, config parsing, credentials, S3 store
  2. Command implementations - sync, validate, list, prune, upload commands
  3. Bootstrap files - SOPS config, encrypted credentials, initial manifest
  4. GitHub Actions + Mergify - CI/CD workflows

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions