Feature: CI/CD Pipeline for Linux x86_64 Release Builds (GitHub & Gitea Actions) #7

Closed
opened 2026-08-21 18:30:41 +01:00 by gronod · 0 comments
Owner

Description

Implement a continuous integration and release pipeline using workflow definitions compatible with both GitHub Actions and Gitea Actions (act_runner) to build, test, and package the current release of ArgyllCMS for Linux x86_64.


Objectives

  • Automate building all ArgyllCMS binaries and tools on Linux x86_64.
  • Build release packages using makepackagebin.sh / Jamtop creating Argyll_V<VERSION>_linux_x86_64_bin.tgz.
  • Maintain 100% dual compatibility between GitHub Actions and Gitea Actions (ensuring no runner-specific dependencies or unsupported proprietary action steps block Gitea act_runner execution).
  • Produce and upload build artifacts (binary tarball and SHA-256 checksums).

Dual-Platform Compatibility (GitHub + Gitea Actions)

  • Workflow Location: Standard .github/workflows/ (which Gitea Actions natively recognizes and runs) or mirrored under .gitea/workflows/.
  • Runner Environment: Target standard Debian/Ubuntu runners (ubuntu-latest / Debian container for act_runner).
  • Action Steps: Use standard, lightweight actions (e.g. actions/checkout@v4, actions/upload-artifact@v4) avoiding unsupported third-party enterprise GitHub-only marketplace actions.

Linux x86_64 Build Specifications & Toolchain

1. System Dependencies & Build Tools

The workflow environment must provision:

  • Build Essentials: build-essential, gcc, make
  • Build Engine: ftjam (or bootstrapping jam from source if distribution package is unavailable)
  • X11 Libraries & Headers:
    • libx11-dev
    • libxext-dev
    • libxxf86vm-dev
    • libxinerama-dev
    • libxrandr-dev
    • libxau-dev
    • libxdmcp-dev
    • libxss-dev
  • Compression & System Libs:
    • libssl-dev
    • libpng-dev
    • libjpeg-dev
    • libtiff-dev
    • zlib1g-dev
    • tar, gzip, zip

2. Build Invocations

  • Compilation:
    export OSTYPE=linux-gnu
    export MACHTYPE=x86_64-pc-linux-gnu
    export HOSTTYPE=x86_64
    jam -q -fJambase -j$(nproc) -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install
    
  • Packaging:
    Execute ./makepackagebin.sh to construct the complete distribution structure:
    • Binaries: bin/*
    • Reference files: ref/*
    • Documentation: doc/*
    • USB rules / configuration: usb/binfiles.lx
    • Output Archive: Argyll_V<VERSION>_linux_x86_64_bin.tgz

Workflow Triggers

  • workflow_dispatch: On-demand manual builds.
  • push / pull_request: Automated build verification against main/development branches.
  • push tags (v*): Trigger automated packaging and release asset attachment.

Verification & Smoke Testing

Add a smoke test step to verify that built binaries execute properly prior to packaging:

./bin/dispcal -?
./bin/chartread -?
./bin/colprof -?
./bin/targen -?

Acceptance Criteria

  • Workflow YAML is placed in .github/workflows/build-linux-x86_64.yml.
  • All build prerequisites and X11 development headers install cleanly on Debian/Ubuntu environments.
  • Jam engine successfully compiles all ArgyllCMS utilities without missing symbol/header errors.
  • makepackagebin.sh completes successfully and produces Argyll_V<VERSION>_linux_x86_64_bin.tgz.
  • Smoke tests pass verifying binary executable integrity.
  • Release archive and SHA-256 checksums are published/uploaded as artifacts.
  • Pipeline executes successfully on both GitHub Actions and Gitea act_runner.
### Description Implement a continuous integration and release pipeline using workflow definitions compatible with both **GitHub Actions** and **Gitea Actions** (`act_runner`) to build, test, and package the current release of ArgyllCMS for **Linux x86_64**. --- ### Objectives - Automate building all ArgyllCMS binaries and tools on Linux x86_64. - Build release packages using `makepackagebin.sh` / `Jamtop` creating `Argyll_V<VERSION>_linux_x86_64_bin.tgz`. - Maintain 100% dual compatibility between **GitHub Actions** and **Gitea Actions** (ensuring no runner-specific dependencies or unsupported proprietary action steps block Gitea `act_runner` execution). - Produce and upload build artifacts (binary tarball and SHA-256 checksums). --- ### Dual-Platform Compatibility (GitHub + Gitea Actions) - **Workflow Location**: Standard `.github/workflows/` (which Gitea Actions natively recognizes and runs) or mirrored under `.gitea/workflows/`. - **Runner Environment**: Target standard Debian/Ubuntu runners (`ubuntu-latest` / Debian container for `act_runner`). - **Action Steps**: Use standard, lightweight actions (e.g. `actions/checkout@v4`, `actions/upload-artifact@v4`) avoiding unsupported third-party enterprise GitHub-only marketplace actions. --- ### Linux x86_64 Build Specifications & Toolchain #### 1. System Dependencies & Build Tools The workflow environment must provision: - **Build Essentials**: `build-essential`, `gcc`, `make` - **Build Engine**: `ftjam` (or bootstrapping `jam` from source if distribution package is unavailable) - **X11 Libraries & Headers**: - `libx11-dev` - `libxext-dev` - `libxxf86vm-dev` - `libxinerama-dev` - `libxrandr-dev` - `libxau-dev` - `libxdmcp-dev` - `libxss-dev` - **Compression & System Libs**: - `libssl-dev` - `libpng-dev` - `libjpeg-dev` - `libtiff-dev` - `zlib1g-dev` - `tar`, `gzip`, `zip` #### 2. Build Invocations - **Compilation**: ```bash export OSTYPE=linux-gnu export MACHTYPE=x86_64-pc-linux-gnu export HOSTTYPE=x86_64 jam -q -fJambase -j$(nproc) -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install ``` - **Packaging**: Execute `./makepackagebin.sh` to construct the complete distribution structure: - Binaries: `bin/*` - Reference files: `ref/*` - Documentation: `doc/*` - USB rules / configuration: `usb/binfiles.lx` - Output Archive: `Argyll_V<VERSION>_linux_x86_64_bin.tgz` --- ### Workflow Triggers - `workflow_dispatch`: On-demand manual builds. - `push` / `pull_request`: Automated build verification against main/development branches. - `push` tags (`v*`): Trigger automated packaging and release asset attachment. --- ### Verification & Smoke Testing Add a smoke test step to verify that built binaries execute properly prior to packaging: ```bash ./bin/dispcal -? ./bin/chartread -? ./bin/colprof -? ./bin/targen -? ``` --- ### Acceptance Criteria - [x] Workflow YAML is placed in `.github/workflows/build-linux-x86_64.yml`. - [x] All build prerequisites and X11 development headers install cleanly on Debian/Ubuntu environments. - [x] Jam engine successfully compiles all ArgyllCMS utilities without missing symbol/header errors. - [x] `makepackagebin.sh` completes successfully and produces `Argyll_V<VERSION>_linux_x86_64_bin.tgz`. - [x] Smoke tests pass verifying binary executable integrity. - [x] Release archive and SHA-256 checksums are published/uploaded as artifacts. - [x] Pipeline executes successfully on both GitHub Actions and Gitea `act_runner`.
gronod added the Kind/Feature label 2026-08-21 18:30:41 +01:00
gronod added the
Reviewed
Confirmed
1
label 2026-08-21 18:31:48 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/argyllcms#7