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