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

@jmgilman

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions