Skip to content

Feature/container - #73

Open
okurz wants to merge 2 commits into
openSUSE:mainfrom
okurz:feature/container
Open

okurz wants to merge 2 commits into
openSUSE:mainfrom
okurz:feature/container

Conversation

@okurz

@okurz okurz commented Sep 23, 2026

Copy link
Copy Markdown
Member

No description provided.

@okurz
okurz force-pushed the feature/container branch 3 times, most recently from 1ceae88 to 265dcaf Compare September 29, 2026 14:31
@github-actions

github-actions Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://openSUSE.github.io/backlogger/pr-preview/pr-73/

Built to branch gh-pages at 2026-09-29 15:19 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

Pages Deployment Status

@okurz
okurz marked this pull request as ready for review September 29, 2026 14:38
Motivation:
Installing system packages via apt-get and Python packages via pip on every
Action run is slow and inefficient. We need a pre-packaged environment to
optimize workflow execution time.

Design Choices:
1. Create container/Containerfile with required system, pip, and font dependencies
   (dejavu-fonts, ghostscript-fonts-std) to enable pre-building the environment image.
2. Extract the composite action steps into entrypoint.sh.
3. Configure action.yaml to execute using the container/Dockerfile with
   entrypoint.sh as the script arguments.

Benefits:
Establishes the initial containerized execution pattern. Once the OBS image
is pre-built and published, startup times will be reduced to near-zero by
fetching the image directly instead of installing packages on-the-fly.
Motivation:
Using a Bash orchestrator for a Python application introduces unnecessary
complexity and language mixing. Furthermore, empty or corrupted state files
can cause the tool to crash, and workspace ownership security checks can
cause git commands to fail inside the container.

Design Choices:
1. Implement entrypoint.py to handle runner context and HTML/PNG rendering entirely in Python.
2. Configure action.yaml to use the Python entrypoint directly.
3. Configure Git to trust /github/workspace globally to avoid ownership errors.
4. Clean up the empty state.json file if the state retrieval command fails.
5. Enhance get_state() in backlogger.py to be defensive against empty/malformed files.

Benefits:
Consolidates the runner orchestration to Python, eliminating the need for
shell tools like sed, making it easier for Python developers to maintain,
and ensuring robust, error-tolerant state management and execution.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant