Compare commits

...
3 Commits
Author SHA1 Message Date
grm-ci-bot 8562f641d7 release: v0.25.0 [skip ci] 2026-09-30 19:02:08 +00:00
kireto 8e3b56761e GRM-174: feat(molecule): label platforms with S08 runner leases; bump devx to v0.56.0
Post-merge / detect-and-configure (push) Successful in 1m1s
Post-merge / release-and-maintain (push) Successful in 1m19s
2026-09-30 19:00:13 +00:00
gitea-actions-bot 84adf3fed2 chore: update badge URLs to commit bf091007 [skip ci] 2026-09-22 17:10:17 +00:00
13 changed files with 102 additions and 15 deletions
+6
View File
@@ -2,6 +2,12 @@
All notable changes to this project will be documented in this file.
## [0.25.0] - 2026-09-30
### Features
- *(molecule)* Label platforms with S08 runner leases; bump devx to v0.56.0
## [0.24.0] - 2026-09-22
### Features
+6 -6
View File
@@ -8,12 +8,12 @@ Each runner runs in an isolated **rootless Docker** environment under a dedicate
[![CI](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions/workflows/ci.yml/badge.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/src/branch/master/LICENSE)
[![Coverage](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/coverage.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Tests](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/tests.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Docs](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/docs.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/wiki)
[![Code Quality](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/quality.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Version](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/version.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/releases)
[![Python](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/python.svg)](https://www.python.org/downloads/)
[![Coverage](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/coverage.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Tests](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/tests.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Docs](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/docs.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/wiki)
[![Code Quality](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/quality.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Version](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/version.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/releases)
[![Python](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/python.svg)](https://www.python.org/downloads/)
## Why GRM?
@@ -4,6 +4,10 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
# Implements: REQ-1 (GRM-174) — S08 lease labels for runner cleanup
labels:
org.oblachno.lease-until: "${MOLECULE_LEASE_UNTIL:-0}"
org.oblachno.owner: "${MOLECULE_OWNER:-molecule-local}"
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:26.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
@@ -4,6 +4,10 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
# Implements: REQ-1 (GRM-174) — S08 lease labels for runner cleanup
labels:
org.oblachno.lease-until: "${MOLECULE_LEASE_UNTIL:-0}"
org.oblachno.owner: "${MOLECULE_OWNER:-molecule-local}"
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:26.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
@@ -4,6 +4,10 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
# Implements: REQ-1 (GRM-174) — S08 lease labels for runner cleanup
labels:
org.oblachno.lease-until: "${MOLECULE_LEASE_UNTIL:-0}"
org.oblachno.owner: "${MOLECULE_OWNER:-molecule-local}"
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:26.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
@@ -4,6 +4,10 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
# Implements: REQ-1 (GRM-174) — S08 lease labels for runner cleanup
labels:
org.oblachno.lease-until: "${MOLECULE_LEASE_UNTIL:-0}"
org.oblachno.owner: "${MOLECULE_OWNER:-molecule-local}"
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:26.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
@@ -4,6 +4,10 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
# Implements: REQ-1 (GRM-174) — S08 lease labels for runner cleanup
labels:
org.oblachno.lease-until: "${MOLECULE_LEASE_UNTIL:-0}"
org.oblachno.owner: "${MOLECULE_OWNER:-molecule-local}"
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:26.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
@@ -4,6 +4,10 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
# Implements: REQ-1 (GRM-174) — S08 lease labels for runner cleanup
labels:
org.oblachno.lease-until: "${MOLECULE_LEASE_UNTIL:-0}"
org.oblachno.owner: "${MOLECULE_OWNER:-molecule-local}"
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:26.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
@@ -4,6 +4,10 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
# Implements: REQ-1 (GRM-174) — S08 lease labels for runner cleanup
labels:
org.oblachno.lease-until: "${MOLECULE_LEASE_UNTIL:-0}"
org.oblachno.owner: "${MOLECULE_OWNER:-molecule-local}"
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:26.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
+6 -6
View File
@@ -8,12 +8,12 @@ Each runner runs in an isolated **rootless Docker** environment under a dedicate
[![CI](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions/workflows/ci.yml/badge.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/src/branch/master/LICENSE)
[![Coverage](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/coverage.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Tests](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/tests.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Docs](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/docs.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/wiki)
[![Code Quality](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/quality.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Version](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/version.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/releases)
[![Python](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/65f88b7e01ee5e9bcdfaa3bdf2708ab68bca80e9/python.svg)](https://www.python.org/downloads/)
[![Coverage](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/coverage.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Tests](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/tests.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Docs](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/docs.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/wiki)
[![Code Quality](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/quality.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/actions)
[![Version](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/version.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/releases)
[![Python](https://git.oblachno.oblachno.fyi/oblachno-oss/grm/raw/commit/bf0910072df3027f77aae29a2e1ce219c16ce374/python.svg)](https://www.python.org/downloads/)
## Overview
+53
View File
@@ -0,0 +1,53 @@
# GRM-174: Apply S08 runner lease labels to gitea_runner molecule platforms + bump devx
- Task: GRM-174
- Status: draft
## Problem
DEVX-181's `start_docker` emits `MOLECULE_LEASE_UNTIL`/`MOLECULE_OWNER`
into `GITHUB_ENV` for CI molecule jobs, and this repo's own
`runner_cleanup.sh` (GRM-173) honors `org.oblachno.lease-until`/
`org.oblachno.owner` labels. The gitea_runner molecule scenarios still
don't map those env vars onto Docker platform labels, so cleanup can
reap an in-flight molecule container/network on the shared runner
daemon. The devx pin also predates the emitter.
## Approach
REQ-1: Add platform labels `org.oblachno.lease-until:
"${MOLECULE_LEASE_UNTIL:-0}"` and `org.oblachno.owner:
"${MOLECULE_OWNER:-molecule-local}"` to all 7
`ansible/roles/gitea_runner/molecule/*/molecule.yml` files.
REQ-2: Bump both `devx` pins in `pyproject.toml` to the first release
containing the emitter.
REQ-3: Unset `MOLECULE_*` env vars resolve to `0`/`molecule-local` — an
already-expired lease — preserving today's local cleanup behavior via
the `:-0`/`:-molecule-local` defaults.
## Test Plan
- `make lint-all` — yamllint + full lint.
- `make pytest-cov` — unchanged 100 % coverage gate.
- PR CI `fast-molecule` converges a touched scenario on the runner with
the env vars present.
## Deploy Plan
- Merge; post-merge auto-publishes the package and auto-creates the
infra devx-pin PR downstream.
## Rollback Plan
- Revert the merge commit; absent labels restore prior cleanup
semantics.
## Acceptance Criteria
- [x] REQ-1: all 7 molecule platforms carry the lease labels —
verified by `grep` across the files.
- [x] REQ-2: devx pins bumped to the release containing the emitter.
- [x] REQ-3: unset env vars produce an expired lease (`0`), preserving
local behavior — enforced by `:-0` defaults.
+2 -2
View File
@@ -36,7 +36,7 @@ ci = [
"build==1.5.1",
"twine==6.2.0",
# Reusable CI/CD and dev tools (auto-merge, pr-review, pre-push checks, etc.)
"devx @ git+https://git.oblachno.oblachno.fyi/oblachno-oss/devx.git@v0.51.9",
"devx @ git+https://git.oblachno.oblachno.fyi/oblachno-oss/devx.git@v0.56.0",
]
# Lint and type-checking tools (validate job)
lint = [
@@ -56,7 +56,7 @@ molecule = [
dev = [
"grm[ci,lint,molecule]",
# Reusable CI/CD and dev tools (pre-push hooks, create-task, create-pr)
"devx @ git+https://git.oblachno.oblachno.fyi/oblachno-oss/devx.git@v0.51.9",
"devx @ git+https://git.oblachno.oblachno.fyi/oblachno-oss/devx.git@v0.56.0",
# Non-Python dev dependency: checkmake (Makefile linter)
# Install via: go install github.com/checkmake/checkmake/cmd/checkmake@latest
]
+1 -1
View File
@@ -1,3 +1,3 @@
"""Gitea Runner Manager — lean CLI for managing Gitea Actions runners."""
__version__ = "0.24.0"
__version__ = "0.25.0"