From 7b14a1abd676e30f9ffe9f5166c494db30cce822 Mon Sep 17 00:00:00 2001 From: Eric Le Lay Date: Mon, 15 Dec 2025 11:10:14 +0100 Subject: [PATCH 1/2] Multinode periodic: show chosen inputs in summary --- .github/workflows/multinode-inputs.py | 21 +++++++++++++++++++ .../workflows/stackhpc-multinode-periodic.yml | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.github/workflows/multinode-inputs.py b/.github/workflows/multinode-inputs.py index 0f6d55cd7..cd5448538 100644 --- a/.github/workflows/multinode-inputs.py +++ b/.github/workflows/multinode-inputs.py @@ -2,6 +2,7 @@ # The test scenario is randomly selected. # The inputs are printed to stdout in GitHub step output key=value format. +import argparse from dataclasses import dataclass import random import typing as t @@ -43,6 +44,16 @@ class Scenario: def main() -> None: + + parser = argparse.ArgumentParser( + description='Randomly picks a multinode scenario to execute') + parser.add_argument( + '--output-summary', '-s', + type=argparse.FileType('w', encoding='UTF-8'), + default=None, + help="Generate a markdown table with selected inputs, can be '-' for stdout") + args = parser.parse_args() + scenario = random_scenario() inputs = { "os_distribution": scenario.os_release.distribution, @@ -57,6 +68,8 @@ def main() -> None: } for name, value in inputs.items(): write_output(name, value) + if args.output_summary: + write_summary(inputs, args.output_summary) def random_scenario() -> Scenario: @@ -84,5 +97,13 @@ def write_output(name: str, value: str) -> None: print(f"{name}={value}") +def write_summary(inputs: dict, output: t.TextIO): + print( + '| Input | Value |\n' + '| -----: | :---- |', file=output) + for key, value in inputs.items(): + print(f'| **{key}** | `{value}` |', file=output) + + if __name__ == "__main__": main() diff --git a/.github/workflows/stackhpc-multinode-periodic.yml b/.github/workflows/stackhpc-multinode-periodic.yml index d573bfb96..00ce12a6a 100644 --- a/.github/workflows/stackhpc-multinode-periodic.yml +++ b/.github/workflows/stackhpc-multinode-periodic.yml @@ -28,7 +28,8 @@ jobs: - name: Generate inputs for multinode workflow id: generate-inputs run: | - python3 .github/workflows/multinode-inputs.py >> $GITHUB_OUTPUT + python3 .github/workflows/multinode-inputs.py -s "$GITHUB_STEP_SUMMARY" \ + | tee -a "$GITHUB_OUTPUT" - name: Display generated inputs run: | From fd496e4465741cb582cc354e60c0a2b13b87916c Mon Sep 17 00:00:00 2001 From: Eric Le Lay Date: Tue, 16 Dec 2025 11:07:53 +0100 Subject: [PATCH 2/2] multinode-inputs.py: better help text Co-authored-by: Alex Welsh <112560678+Alex-Welsh@users.noreply.github.com> --- .github/workflows/multinode-inputs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/multinode-inputs.py b/.github/workflows/multinode-inputs.py index cd5448538..03a50ae5d 100644 --- a/.github/workflows/multinode-inputs.py +++ b/.github/workflows/multinode-inputs.py @@ -51,7 +51,7 @@ def main() -> None: '--output-summary', '-s', type=argparse.FileType('w', encoding='UTF-8'), default=None, - help="Generate a markdown table with selected inputs, can be '-' for stdout") + help="Write a markdown summary table of selected inputs to a file (use '-' to write to stdout)") args = parser.parse_args() scenario = random_scenario()