ops(ci): configure LLM API keys in Forgejo CI for integration test execution #710

Merged
freemo merged 1 commits from ops/m3-ci-llm-keys into master 2026-03-14 22:40:58 +00:00
Owner

Summary

Configures the Forgejo CI pipeline to inject LLM API keys as environment variables during Robot Framework integration test execution, enabling real LLM endpoint calls after mock removal (#698, #699, #700).

Closes #701

Changes

CI pipeline

  • .forgejo/workflows/ci.yml — Updated the integration test job to inject ANTHROPIC_API_KEY and OPENAI_API_KEY from Forgejo repository secrets as environment variables, with masking enabled to prevent exposure in CI logs

Documentation

  • docs/development/ci-cd.md — New documentation describing:
    • Required secret names (ANTHROPIC_API_KEY, OPENAI_API_KEY)
    • How to add secrets via Forgejo repository settings
    • How secrets are injected and masked in CI
    • Verification steps to confirm integration tests pass with real LLM endpoints

Design decisions

  • Secrets are scoped to the integration test job only (not available to unit test or lint jobs)
  • Unit tests (Behave BDD) continue to run without requiring API keys
  • Secret names follow the convention used by the LLM provider SDKs (ANTHROPIC_API_KEY, OPENAI_API_KEY)

Quality Checks

  • nox -e typecheck — 0 Pyright errors
  • nox -e lint — all checks passed
  • nox -e format — all files unchanged
  • No secrets committed to source code
## Summary Configures the Forgejo CI pipeline to inject LLM API keys as environment variables during Robot Framework integration test execution, enabling real LLM endpoint calls after mock removal (#698, #699, #700). Closes #701 ## Changes ### CI pipeline - **`.forgejo/workflows/ci.yml`** — Updated the integration test job to inject `ANTHROPIC_API_KEY` and `OPENAI_API_KEY` from Forgejo repository secrets as environment variables, with masking enabled to prevent exposure in CI logs ### Documentation - **`docs/development/ci-cd.md`** — New documentation describing: - Required secret names (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`) - How to add secrets via Forgejo repository settings - How secrets are injected and masked in CI - Verification steps to confirm integration tests pass with real LLM endpoints ### Design decisions - Secrets are scoped to the integration test job only (not available to unit test or lint jobs) - Unit tests (Behave BDD) continue to run without requiring API keys - Secret names follow the convention used by the LLM provider SDKs (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`) ## Quality Checks - `nox -e typecheck` — 0 Pyright errors - `nox -e lint` — all checks passed - `nox -e format` — all files unchanged - No secrets committed to source code
freemo added this to the v3.2.0 milestone 2026-03-12 01:36:10 +00:00
freemo added the
Type
Task
label 2026-03-12 01:36:11 +00:00
freemo self-assigned this 2026-03-12 20:33:28 +00:00
freemo reviewed 2026-03-12 20:36:41 +00:00
freemo left a comment
Author
Owner

Review — PR #710: ops(ci): configure LLM API keys in Forgejo CI

Diff Summary

  • Files changed: 2 (ci.yml, docs/development/ci-cd.md)
  • Lines: +26 / −0

Commit Message Compliance

  • Issue #701 metadata: ops(ci): configure LLM API keys in Forgejo CI for integration test execution
  • PR commit first line: ops(ci): configure LLM API keys in Forgejo CI for integration test execution
  • Match: Exact match

Closes Keyword

  • PR body contains Closes #701

Label Compliance

Required Label Status
Type label Type/Task
Priority label Missing (issue has Priority/Critical)
MoSCoW label Missing (issue has MoSCoW/Must have)

Code Quality

  • CI change is correctly scoped to the integration_tests job only — unit tests and lint jobs are unaffected.
  • Secrets use ${{ secrets.* }} syntax with automatic masking — no risk of log exposure.
  • Documentation in ci-cd.md is comprehensive: includes a full secrets table covering both LLM keys and existing AWS/ASV secrets, and clearly distinguishes unit vs. integration test requirements.
  • No secrets committed to source.

Verdict: COMMENT

Code and documentation quality are good. The only compliance gap is that the PR itself is missing Priority/Critical and MoSCoW/Must have labels — please add them to match issue #701 before merge.

## Review — PR #710: ops(ci): configure LLM API keys in Forgejo CI ### Diff Summary - **Files changed:** 2 (`ci.yml`, `docs/development/ci-cd.md`) - **Lines:** +26 / −0 ### Commit Message Compliance - **Issue #701 metadata:** `ops(ci): configure LLM API keys in Forgejo CI for integration test execution` - **PR commit first line:** `ops(ci): configure LLM API keys in Forgejo CI for integration test execution` - **Match:** ✅ Exact match ### Closes Keyword - PR body contains `Closes #701` ✅ ### Label Compliance | Required Label | Status | |---|---| | Type label | ✅ `Type/Task` | | Priority label | ❌ Missing (issue has `Priority/Critical`) | | MoSCoW label | ❌ Missing (issue has `MoSCoW/Must have`) | ### Code Quality - CI change is correctly scoped to the `integration_tests` job only — unit tests and lint jobs are unaffected. - Secrets use `${{ secrets.* }}` syntax with automatic masking — no risk of log exposure. - Documentation in `ci-cd.md` is comprehensive: includes a full secrets table covering both LLM keys and existing AWS/ASV secrets, and clearly distinguishes unit vs. integration test requirements. - No secrets committed to source. ### Verdict: COMMENT Code and documentation quality are good. The only compliance gap is that the PR itself is missing `Priority/Critical` and `MoSCoW/Must have` labels — please add them to match issue #701 before merge.
freemo added the
MoSCoW
Must have
Points
3
Priority
Critical
State
In Progress
labels 2026-03-12 20:57:07 +00:00
Author
Owner

PM Review — Day 34

Status: Mergeable, 0 reviews, Priority/Critical, M3 (v3.2.0), Points/3
Author: @freemo

Review Summary

Clean, well-scoped 2-file PR:

  • .forgejo/workflows/ci.yml — adds ANTHROPIC_API_KEY and OPENAI_API_KEY secret refs to integration_tests job only (correctly not leaking to lint/unit test jobs)
  • docs/development/ci-cd.md — thorough documentation of CI secrets

No credentials in source code — only ${{ secrets.* }} references. This is a prerequisite for E2E tests to pass in CI.

Assessment

  • No issues found. Clean, minimal, correct.
  • Merge priority: HIGH — this blocks CI execution of all E2E/integration tests that require LLM API keys (PRs #786-#820, #799-#802, etc.)
  • Label note: State is In Progress but this looks complete — should be In Review

Action Items

Who Action Deadline
@brent.edwards Peer review — CI/QA domain, quick approval expected Day 35
@freemo Confirm secrets are configured in Forgejo admin UI Day 35
## PM Review — Day 34 **Status**: Mergeable, 0 reviews, Priority/Critical, M3 (v3.2.0), Points/3 **Author**: @freemo ### Review Summary Clean, well-scoped 2-file PR: - `.forgejo/workflows/ci.yml` — adds `ANTHROPIC_API_KEY` and `OPENAI_API_KEY` secret refs to `integration_tests` job only (correctly not leaking to lint/unit test jobs) - `docs/development/ci-cd.md` — thorough documentation of CI secrets No credentials in source code — only `${{ secrets.* }}` references. This is a prerequisite for E2E tests to pass in CI. ### Assessment - **No issues found.** Clean, minimal, correct. - **Merge priority: HIGH** — this blocks CI execution of all E2E/integration tests that require LLM API keys (PRs #786-#820, #799-#802, etc.) - **Label note**: State is `In Progress` but this looks complete — should be `In Review` ### Action Items | Who | Action | Deadline | |-----|--------|----------| | @brent.edwards | **Peer review** — CI/QA domain, quick approval expected | Day 35 | | @freemo | Confirm secrets are configured in Forgejo admin UI | Day 35 |
freemo reviewed 2026-03-14 22:07:13 +00:00
freemo left a comment
Author
Owner

PM Status — Day 34

@freemo — CI LLM API keys (#701). Mergeable with 2 comments. This is Priority/Critical + Must Have.

Status: In Progress. This is a DevOps prerequisite for real LLM integration tests in CI. Blocks full mock removal completion (#699).

Dependency chain: PR #710#701 (CI keys configured) → #699 (unittest.mock removal) → M3 mock removal complete.

Priority: Critical path for M3 closure. Please prioritize after bug #620 regression investigation.


PM status — Day 34

## PM Status — Day 34 @freemo — CI LLM API keys (#701). Mergeable with 2 comments. This is **Priority/Critical + Must Have**. **Status**: In Progress. This is a DevOps prerequisite for real LLM integration tests in CI. Blocks full mock removal completion (#699). **Dependency chain**: PR #710 → #701 (CI keys configured) → #699 (unittest.mock removal) → M3 mock removal complete. **Priority**: Critical path for M3 closure. Please prioritize after bug #620 regression investigation. --- *PM status — Day 34*
freemo force-pushed ops/m3-ci-llm-keys from c5ad6ab7ea to 8720400cf7 2026-03-14 22:22:31 +00:00 Compare
freemo scheduled this pull request to auto merge when all checks succeed 2026-03-14 22:22:50 +00:00
freemo scheduled this pull request to auto merge when all checks succeed 2026-03-14 22:34:09 +00:00
freemo force-pushed ops/m3-ci-llm-keys from 8720400cf7 to ce722ed0ea 2026-03-14 22:34:19 +00:00 Compare
freemo merged commit ce722ed0ea into master 2026-03-14 22:40:58 +00:00
freemo deleted branch ops/m3-ci-llm-keys 2026-03-14 22:40:59 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Reference: cleveragents/cleveragents-core#710