Add fallback environment variable support and improve error handling in Docker release workflow
- Add require_any_env helper to check multiple environment variable names with fallback - Update generate_release_body_with_openrouter to accept OPENROUTER_MODEL_NAME or OPENROUTER_MODEL - Add generic Exception catch in resolve_release_command for unexpected errors during release note generation - Remove ref checkout constraint in docker-publish workflow to allow flexible branch/tag resolution - Add GITHUB_TOKEN to
frdel committed
Mar 26, 2026 at 20:25 UTC
43a519f522a6a49f92e67c692bb2389dc920d208
2 files changed
+18
-2
.github/scripts/docker_release_plan.py
+17
-1
@@ -77,6 +77,17 @@ def require_env(name: str) -> str:
77
return value
78
79
80
+def require_any_env(*names: str) -> str:
81
+ for name in names:
82
+ value = os.environ.get(name, "").strip()
83
+ if value:
84
+ return value
85
+ fail(
86
+ "Required environment variable is missing. Expected one of: "
87
+ + ", ".join(f"`{name}`" for name in names)
88
+ )
89
+
90
+
91
@dataclass(frozen=True)
92
class Config:
93
allowed_branches: list[str]
@@ -607,7 +618,7 @@ def extract_openrouter_message_content(payload: object) -> str:
618
619
def generate_release_body_with_openrouter(commits: list[CommitEntry]) -> str:
620
api_key = require_env("OPENROUTER_API_KEY")
610
- model = require_env("OPENROUTER_MODEL_NAME")
621
+ model = require_any_env("OPENROUTER_MODEL_NAME", "OPENROUTER_MODEL")
622
system_prompt = load_text(OPENROUTER_SYSTEM_PROMPT_PATH)
623
repository = require_env("GITHUB_REPOSITORY")
624
user_message = build_release_notes_user_message(commits)
@@ -704,6 +715,11 @@ def resolve_release_command() -> None:
715
f"Release note generation failed for `{source_tag}`. Falling back to a static release body.",
716
file=sys.stderr,
717
)
718
+ except Exception as exc:
719
+ print(
720
+ f"Unexpected release note generation error for `{source_tag}`: {exc}. Falling back to a static release body.",
721
+ file=sys.stderr,
722
+ )
723
724
write_output("should_release", "true")
725
write_output("release_tag", source_tag)
.github/workflows/docker-publish.yml
+1
-1
@@ -94,7 +94,6 @@ jobs:
94
uses: actions/checkout@v4
95
with:
96
fetch-depth: 0
97
- ref: ${{ matrix.source_tag }}
97
98
- name: Fetch remote branches and tags
99
run: git fetch --force --tags origin '+refs/heads/*:refs/remotes/origin/*'
@@ -173,6 +172,7 @@ jobs:
172
DOCKER_IMAGE_REPO: ${{ format('{0}/{1}', secrets.DOCKERHUB_ORG, env.DOCKER_IMAGE_NAME) }}
173
TARGET_BRANCH: ${{ matrix.branch }}
174
TARGET_TAG: ${{ matrix.source_tag }}
175
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
176
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
177
OPENROUTER_MODEL_NAME: ${{ vars.OPENROUTER_MODEL_NAME }}
178
run: python3 .github/scripts/docker_release_plan.py resolve-release