Skip to content

As a PDS software developer, I want to use Debian-based roundup action images #163

@jordanpadams

Description

@jordanpadams

Checked for duplicates

Yes - I've already checked

🧑‍🔬 User Persona(s)

PDS Software Developer, Repository Maintainer, CI/CD Pipeline Operator

💪 Motivation

...so that I can successfully build and test packages with OS-specific dependencies that don't compile or run correctly on Alpine Linux's MUSL C library, particularly when working with packages like spiceypy that have native C extensions.

📖 Additional Details

Background

The roundup action currently uses Alpine Linux as its base image. While Alpine is valued for its small size, it uses MUSL C library instead of glibc, which causes compatibility issues with certain Python packages and their native dependencies.

Specific Issue: naif-pds4-bundler + spiceypy

Testing with naif-pds4-bundler revealed the following OS-dependent behavior:

Alpine Linux (current roundup base):

  • spiceypy==4.0.3: Installation succeeds but tox tests fail (py3, lint)
  • spiceypy==7.0.0: Installation fails entirely with wheel build errors

Debian Linux:

  • spiceypy==4.0.3: Installation succeeds but tox tests fail (py3, lint)
  • spiceypy==7.0.0: Installation succeeds, tox tests fail only on lint

macOS:

  • spiceypy==4.0.3: Installation succeeds but tox tests fail (py3)
  • spiceypy==7.0.0: Everything succeeds (closest to full success)

Proposed Solution

Offer two variants of the roundup action to allow users to choose based on their dependency requirements:

  1. stable-default (or just stable): Continue using Alpine Linux for most cases
  2. stable-debian: New Debian-based variant for packages with Alpine compatibility issues

Example usage in workflow files:

# Alpine version (current default)
uses: NASA-PDS/roundup-action@stable

# Debian version (new variant)
uses: NASA-PDS/roundup-action@stable-debian

Technical Context

  • Alpine achieves small size by using MUSL C library instead of glibc
  • Many Python packages with C extensions assume glibc and may not compile or work correctly with MUSL
  • This has not been a widespread issue until now, but is a known trade-off of Alpine
  • Both image variants would maintain the same functionality, just with different base OS

References

  • Original issue: naif-pds4-bundler spiceypy compatibility
  • Failed GitHub Actions run: Package installation failures with spiceypy>=7.0.0
  • Previous successful builds used spiceypy 7.0.0 on different infrastructure

For Internal Dev Team To Complete

Acceptance Criteria

Given a repository with dependencies that require glibc (like spiceypy)
When I configure my workflow to use NASA-PDS/roundup-action@stable-debian
Then I expect the roundup to execute successfully with those dependencies installed and tested

⚙️ Engineering Details

To be filled by engineering team

🎉 I&T

To be filled by engineering team

Metadata

Metadata

Assignees

Projects

Status

ToDo

Status

Todo

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions