Skip to content

[fournos-launcher] Make it work with FOURNOS v0.3.1 - #21

Merged
kpouget merged 12 commits into
openshift-psap:mainfrom
kpouget:launcher
Apr 13, 2026
Merged

kpouget merged 12 commits into
openshift-psap:mainfrom
kpouget:launcher

Conversation

@kpouget

@kpouget kpouget commented Apr 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features

    • Added a --namespace option to the submit command.
    • FOURNOS CI integration: process FOURNOS artifacts and convert them into CI variable overrides.
  • Improvements

    • Job cleanup now removes Kubernetes job objects.
    • Job template supports structured argument rendering.
    • CI environment metadata is persisted to artifacts (best-effort).
    • PR metadata downloading and CI-argument parsing handle multiple CI modes and log failures without failing the run.
    • Notification sending streamlined for more direct delivery.

@openshift-ci

openshift-ci Bot commented Apr 10, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign avasilevskii for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai

coderabbitai Bot commented Apr 10, 2026 •

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

CI entrypoint now branches on FOURNOS_CI: Fournos-specific env/config files are processed and converted into variable_overrides saved under ARTIFACT_DIR/000__ci_metadata; the OpenShift CI path is isolated. All CI env vars are written to env.sh (best-effort). PR metadata is fetched via requests into pull_request*.json artifacts.

Changes

Cohort / File(s) Summary
CI Entrypoint & Fournos module
projects/core/ci_entrypoint/prepare_ci.py, projects/core/ci_entrypoint/fournos.py
Added direct Fournos integration: process_fournos_environment(), transform_fournos_config_to_variable_overrides(), and parse_and_save_pr_arguments_fournos(). parse_and_save_pr_arguments() now delegates to Fournos or parse_and_save_pr_arguments_ocpci(). PR metadata download extracted into download_pr_information() using requests.
Artifact env capture
projects/core/ci_entrypoint/prepare_ci.py
system_prechecks() now writes all os.environ to $ARTIFACT_DIR/000__ci_metadata/env.sh (sorted keys, single-quoted, escaped) in a best-effort try/except.
Notifications
projects/core/notifications/send.py
Removed lazy/optional import pattern; now directly imports projects.core.notifications.github.api and projects.core.notifications.slack.api and calls send.send_job_completion_notification(...) without dynamic loader.
Fournos CLI / namespace
projects/fournos_launcher/orchestration/cli.py
Added optional --namespace to submit command, updated submit signature to accept namespace, and persist fournos.namespace into project config when provided.
Submit & cleanup behavior
projects/fournos_launcher/toolbox/submit_and_wait/main.py
Renamed cleanup to cleanup_job; cleanup now issues oc delete fournosjob {ctx.final_job_name} -n {args.namespace} --ignore-not-found instead of deleting a local manifest file.
Job template args rendering
projects/fournos_launcher/toolbox/submit_and_wait/templates/job.yaml.j2
Replaced spec.forge.preset string with structured spec.forge.args rendered via `{{ args.args
Core config defaults
projects/core/library/config.py
Refactored Config.ensure_core_fields() to iterate mandatory fields, always set presets to empty dict, ensure cluster, project, exec_list keys, and add new top-level ci_job section. Removed demo MockConfig.

Sequence Diagram(s)

sequenceDiagram
  participant CI as CI Entrypoint
  participant FS as Artifact Dir (000__ci_metadata)
  participant PRapi as Pull Request API
  participant Fournos as Fournos Launcher/CLI
  participant Kube as Kubernetes (oc)

  CI->>CI: parse_and_save_pr_arguments() checks FOURNOS_CI
  alt FOURNOS_CI=true
    CI->>FS: process_fournos_environment() (read/move forge_config.env)
    CI->>CI: transform_fournos_config_to_variable_overrides()
    CI->>FS: write variable_overrides.yaml and move originals
  else ocpci
    CI->>CI: parse_and_save_pr_arguments_ocpci()
    CI->>FS: write variable_overrides (ocpci path)
  end
  CI->>FS: system_prechecks() write env.sh (best-effort)
  CI->>PRapi: download_pr_information() -> requests.get(...)
  PRapi-->>FS: write pull_request.json / pull_request-comments.json
  Fournos->>Kube: submit() creates job (renders job.yaml with spec.forge.args)
  Fournos->>Kube: cleanup_job() -> oc delete fournosjob {job} -n {namespace} --ignore-not-found
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐇
I hopped through configs, flattened each name,
I tucked envs in folders so builds know their frame,
I whispered namespace so pods find their space,
I nudged old cleanup to tidy the place,
A rabbit hums — another neat change!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%.
Title check ✅ Passed The title directly addresses the main objective: updating FOURNOS-launcher to work with FOURNOS v0.3.1, which is reflected throughout the changeset with new CLI options, refactored PR parsing, and updated job templates.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test jump-ci llm_d cks
/cluster cluster-1
/var fournos.namespace: psap-automation-wip
/var prepare.namespace.name: kpouget-dev

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev
/var fournos.namespace: psap-automation-wip

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
projects/core/ci_entrypoint/prepare_ci.py (1)

399-403: Defensive check: Consider adding shell identifier validation to env.sh generation.

The code exports environment variables without validating that keys are valid shell identifiers (pattern ^[A-Za-z_][A-Za-z0-9_]*$). A test confirmed that no invalid identifiers currently exist in the CI environment (invalid_shell_identifier_count=0), so the script works correctly today. However, adding explicit filtering or validation before writing would make this more robust against unexpected environment states.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@projects/core/ci_entrypoint/prepare_ci.py` around lines 399 - 403, The env
export loop in prepare_ci.py writes all os.environ items to env.sh without
validating that keys are valid shell identifiers; update the loop that iterates
over os.environ (the for key, value in sorted(os.environ.items()) block) to
first validate each key against the shell identifier regex
^[A-Za-z_][A-Za-z0-9_]*$ and only write exports for matching keys, skipping (and
optionally logging) any invalid keys; keep the existing escaping of values
(escaped_value = value.replace("'", "'\\''")) and write only validated entries
to the file.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@projects/core/ci_entrypoint/prepare_ci.py`:
- Around line 393-403: The current loop that writes all environment variables
(the for key, value in sorted(os.environ.items()) block that computes
escaped_value and f.write export lines) will persist secrets; change this to
either write only an allowlist (e.g., a module-level ALLOWLIST_ENV_VARS) or
redact sensitive values by checking key against a blacklist/regex (e.g., keys
matching TOKEN|SECRET|KEY|PASSWORD|AWS|GCP) and replacing the value with
"<REDACTED>" before escaping and writing; additionally, after creating env_file
set restrictive permissions (use os.chmod(env_file, 0o600)) so the artifact is
not world-readable.

In `@projects/fournos_launcher/orchestration/cli.py`:
- Around line 76-79: Validate the incoming namespace string before persisting
it: check the `namespace` variable matches a safe Kubernetes/DNS label regex
(e.g. lowercase letters and digits with optional internal hyphens, start/end
with alphanumeric, max length 63) and reject or raise/log an error for anything
that doesn't match; only call `config.project.set_config("fournos.namespace",
namespace)` after the validation passes and keep the existing
`logging.info(f"Using namespace {namespace}")` placement after successful
validation to avoid storing or using unsafe input in subsequent `oc` command
interpolation.

In `@projects/fournos_launcher/toolbox/submit_and_wait/main.py`:
- Around line 213-215: The cleanup call using shell.run(f'oc delete fournosjob
{ctx.final_job_name} -n {args.namespace} --ignore-not-found') must be made
best-effort so it cannot mask the primary submit/wait failure; wrap that
shell.run invocation (the oc delete using ctx.final_job_name and args.namespace)
in a try/except that catches any exception, does not re-raise, and instead logs
a warning (including the exception message and the job name/namespace) so
cleanup failures are non-fatal when the function is decorated with `@always`.
- Line 217: Replace the stale return string "No manifest file to clean up" with
a message that reflects the actual resource being deleted (e.g., "No FournosJob
resource to clean up" or "No FournosJob found to clean up"); search for that
exact string in main.py (the return value in the cleanup function) and update it
so logs/returns correctly reference the FournosJob resource instead of a
manifest file.

---

Nitpick comments:
In `@projects/core/ci_entrypoint/prepare_ci.py`:
- Around line 399-403: The env export loop in prepare_ci.py writes all
os.environ items to env.sh without validating that keys are valid shell
identifiers; update the loop that iterates over os.environ (the for key, value
in sorted(os.environ.items()) block) to first validate each key against the
shell identifier regex ^[A-Za-z_][A-Za-z0-9_]*$ and only write exports for
matching keys, skipping (and optionally logging) any invalid keys; keep the
existing escaping of values (escaped_value = value.replace("'", "'\\''")) and
write only validated entries to the file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 38310976-368c-4c39-af48-93ca87dfd4d0

📥 Commits

Reviewing files that changed from the base of the PR and between 24d4584 and e13d6e0.

📒 Files selected for processing (4)
  • projects/core/ci_entrypoint/prepare_ci.py
  • projects/fournos_launcher/orchestration/cli.py
  • projects/fournos_launcher/toolbox/submit_and_wait/main.py
  • projects/fournos_launcher/toolbox/submit_and_wait/templates/job.yaml.j2

Comment thread projects/core/ci_entrypoint/prepare_ci.py
Comment thread projects/fournos_launcher/orchestration/cli.py
Comment thread projects/fournos_launcher/toolbox/submit_and_wait/main.py
Comment thread projects/fournos_launcher/toolbox/submit_and_wait/main.py
@psap-forge-bot

Copy link
Copy Markdown

🔴 Test of 'fournos_launcher submit' failed after 00 hours 00 minutes 26 seconds 🔴

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev
/var fournos.namespace: psap-automation-wip

• Failure indicator:

## /logs/artifacts/FAILURE 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
~~ projects/fournos_launcher/toolbox/submit_and_wait/main.py:152
~~ TASK: wait_for_job_completion: Wait for FOURNOS job to complete
~~ ARTIFACT_DIR: /logs/artifacts/001__submit_and_wait
~~ LOG_FILE: /logs/artifacts/001__submit_and_wait/task.log
~~ ARGS:
~~     cluster_name: cluster-1
~~     project: llm_d
~~     args:
~~     - cks
~~     variables_overrides:
~~       prepare.namespace.name: kpouget-dev
~~     job_name: ''
~~     namespace: psap-automation-wip
~~     owner: FORGE/fournos-launcher
~~     display_name: Forge Job
~~     pipeline_name: forge-test-only
~~     env:
~~       JOB_TYPE: presubmit
~~       JOB_NAME: pull-ci-openshift-psap-forge-main-fournos
~~       JOB_SPEC: '{"type":"presubmit","job":"pull-ci-openshift-psap-forge-main-fournos","buildid":"2042517977441505280","prowjobid":"7f4a32d8-17eb-493c-b5f5-0b15cfdc8ae3","refs":{"org":"openshift-psap","repo":"forge","repo_link":"https://github.com/openshift-psap/forge","base_ref":"main","base_sha":"24d458480637834350b56ca99aae84f5a18ccb1f","base_link":"https://github.com/openshift-psap/forge/commit/24d458480637834350b56ca99aae84f5a18ccb1f","pulls":[{"number":21,"author":"kpouget","sha":"e13d6e02449b8e25d972df27ecd09626c448569c","title":"[fournos-launcher]
~~         Update to the latest version","head_ref":"launcher","link":"https://github.com/openshift-psap/forge/pull/21","commit_link":"https://github.com/openshift-psap/forge/pull/21/commits/e13d6e02449b8e25d972df27ecd09626c448569c","author_link":"https://github.com/kpouget"}]},"decoration_config":{"timeout":"23h0m0s","grace_period":"15s","utility_images":{"clonerefs":"us-docker.pkg.dev/k8s-infra-prow/images/clonerefs:v20260408-3bbc91829","initupload":"us-docker.pkg.dev/k8s-infra-prow/images/initupload:v20260408-3bbc91829","entrypoint":"us-docker.pkg.dev/k8s-infra-prow/images/entrypoint:v20260408-3bbc91829","sidecar":"us-docker.pkg.dev/k8s-infra-prow/images/sidecar:v20260408-3bbc91829"},"resources":{"clonerefs":{"limits":{"memory":"3Gi"},"requests":{"cpu":"100m","memory":"500Mi"}},"initupload":{"limits":{"memory":"200Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"place_entrypoint":{"limits":{"memory":"100Mi"},"requests":{"cpu":"100m","memory":"25Mi"}},"sidecar":{"limits":{"memory":"2Gi"},"requests":{"cpu":"100m","memory":"250Mi"}}},"gcs_configuration":{"bucket":"test-platform-results","path_strategy":"single","default_org":"openshift","default_repo":"origin","mediaTypes":{"log":"text/plain"},"compress_file_types":["txt","log","json","tar","html","yaml"]},"gcs_credentials_secret":"gce-sa-credentials-gcs-publisher","skip_cloning":true,"censor_secrets":true,"censoring_options":{"minimum_secret_length":6}}}'
~~       OPENSHIFT_CI: 'true'
~~       JOB_NAME_SAFE: fournos
~~       BUILD_ID: '2042517977441505280'
~~       PULL_PULL_SHA: e13d6e02449b8e25d972df27ecd09626c448569c
~~       PULL_NUMBER: '21'
~~       PULL_BASE_REF: main
~~       REPO_NAME: forge
~~       REPO_OWNER: openshift-psap
~~       PULL_BASE_SHA: 24d458480637834350b56ca99aae84f5a18ccb1f
~~       PULL_TITLE: '[fournos-launcher] Update to the latest version'
~~       PULL_REFS: main:24d458480637834350b56ca99aae84f5a18ccb1f,21:e13d6e02449b8e25d972df27ecd09626c448569c
~~       PULL_HEAD_REF: launcher
~~     artifact_dir: /logs/artifacts/001__submit_and_wait
~~ CONTEXT:
~~     final_job_name: forge-llm-d-20260410-082244
~~     manifest_file: /logs/artifacts/001__submit_and_wait/src/forge-llm-d-20260410-082244-manifest.yaml
~~
~~ EXCEPTION: RuntimeError
~~     Job forge-llm-d-20260410-082244 failed: Tasks Completed: 1 (Failed: 1, Cancelled 0), Skipped: 0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


[...]

• Execution logs

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author
+ cat forge_config.env
PULL_TITLE=[fournos-launcher] Update to the latest version
REPO_NAME=forge
REPO_OWNER=openshift-psap

...
+ source forge_config.env
++ PULL_TITLE='[fournos-launcher]'
++ Update to the latest version
forge_config.env: line 13: Update: command not found

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev
/var fournos.namespace: psap-automation-wip

@psap-forge-bot

Copy link
Copy Markdown

🔴 Test of 'fournos_launcher submit' failed after 00 hours 00 minutes 26 seconds 🔴

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev
/var fournos.namespace: psap-automation-wip

• Failure indicator:

## /logs/artifacts/FAILURE 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
~~ projects/fournos_launcher/toolbox/submit_and_wait/main.py:152
~~ TASK: wait_for_job_completion: Wait for FOURNOS job to complete
~~ ARTIFACT_DIR: /logs/artifacts/001__submit_and_wait
~~ LOG_FILE: /logs/artifacts/001__submit_and_wait/task.log
~~ ARGS:
~~     cluster_name: cluster-1
~~     project: llm_d
~~     args:
~~     - cks
~~     variables_overrides:
~~       prepare.namespace.name: kpouget-dev
~~     job_name: ''
~~     namespace: psap-automation-wip
~~     owner: FORGE/fournos-launcher
~~     display_name: Forge Job
~~     pipeline_name: forge-test-only
~~     env:
~~       JOB_TYPE: presubmit
~~       JOB_NAME: pull-ci-openshift-psap-forge-main-fournos
~~       JOB_SPEC: '{"type":"presubmit","job":"pull-ci-openshift-psap-forge-main-fournos","buildid":"2042529002110849024","prowjobid":"d269dd06-68bb-4af0-8363-29f2c07ae09f","refs":{"org":"openshift-psap","repo":"forge","repo_link":"https://github.com/openshift-psap/forge","base_ref":"main","base_sha":"24d458480637834350b56ca99aae84f5a18ccb1f","base_link":"https://github.com/openshift-psap/forge/commit/24d458480637834350b56ca99aae84f5a18ccb1f","pulls":[{"number":21,"author":"kpouget","sha":"e13d6e02449b8e25d972df27ecd09626c448569c","title":"[fournos-launcher]
~~         Update to the latest version","head_ref":"launcher","link":"https://github.com/openshift-psap/forge/pull/21","commit_link":"https://github.com/openshift-psap/forge/pull/21/commits/e13d6e02449b8e25d972df27ecd09626c448569c","author_link":"https://github.com/kpouget"}]},"decoration_config":{"timeout":"23h0m0s","grace_period":"15s","utility_images":{"clonerefs":"us-docker.pkg.dev/k8s-infra-prow/images/clonerefs:v20260408-3bbc91829","initupload":"us-docker.pkg.dev/k8s-infra-prow/images/initupload:v20260408-3bbc91829","entrypoint":"us-docker.pkg.dev/k8s-infra-prow/images/entrypoint:v20260408-3bbc91829","sidecar":"us-docker.pkg.dev/k8s-infra-prow/images/sidecar:v20260408-3bbc91829"},"resources":{"clonerefs":{"limits":{"memory":"3Gi"},"requests":{"cpu":"100m","memory":"500Mi"}},"initupload":{"limits":{"memory":"200Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"place_entrypoint":{"limits":{"memory":"100Mi"},"requests":{"cpu":"100m","memory":"25Mi"}},"sidecar":{"limits":{"memory":"2Gi"},"requests":{"cpu":"100m","memory":"250Mi"}}},"gcs_configuration":{"bucket":"test-platform-results","path_strategy":"single","default_org":"openshift","default_repo":"origin","mediaTypes":{"log":"text/plain"},"compress_file_types":["txt","log","json","tar","html","yaml"]},"gcs_credentials_secret":"gce-sa-credentials-gcs-publisher","skip_cloning":true,"censor_secrets":true,"censoring_options":{"minimum_secret_length":6}}}'
~~       OPENSHIFT_CI: 'true'
~~       JOB_NAME_SAFE: fournos
~~       BUILD_ID: '2042529002110849024'
~~       PULL_PULL_SHA: e13d6e02449b8e25d972df27ecd09626c448569c
~~       PULL_NUMBER: '21'
~~       PULL_BASE_REF: main
~~       REPO_NAME: forge
~~       REPO_OWNER: openshift-psap
~~       PULL_BASE_SHA: 24d458480637834350b56ca99aae84f5a18ccb1f
~~       PULL_TITLE: '[fournos-launcher] Update to the latest version'
~~       PULL_REFS: main:24d458480637834350b56ca99aae84f5a18ccb1f,21:e13d6e02449b8e25d972df27ecd09626c448569c
~~       PULL_HEAD_REF: launcher
~~     artifact_dir: /logs/artifacts/001__submit_and_wait
~~ CONTEXT:
~~     final_job_name: forge-llm-d-20260410-090420
~~     manifest_file: /logs/artifacts/001__submit_and_wait/src/forge-llm-d-20260410-090420-manifest.yaml
~~
~~ EXCEPTION: RuntimeError
~~     Job forge-llm-d-20260410-090420 failed: Tasks Completed: 1 (Failed: 1, Cancelled 0), Skipped: 0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


[...]

• Execution logs

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev
/var fournos.namespace: psap-automation-wip

@psap-forge-bot

Copy link
Copy Markdown

🔴 Test of 'fournos_launcher submit' failed after 00 hours 00 minutes 26 seconds 🔴

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev
/var fournos.namespace: psap-automation-wip

• Failure indicator:

## /logs/artifacts/FAILURE 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
~~ projects/fournos_launcher/toolbox/submit_and_wait/main.py:152
~~ TASK: wait_for_job_completion: Wait for FOURNOS job to complete
~~ ARTIFACT_DIR: /logs/artifacts/001__submit_and_wait
~~ LOG_FILE: /logs/artifacts/001__submit_and_wait/task.log
~~ ARGS:
~~     cluster_name: cluster-1
~~     project: llm_d
~~     args:
~~     - cks
~~     variables_overrides:
~~       prepare.namespace.name: kpouget-dev
~~     job_name: ''
~~     namespace: psap-automation-wip
~~     owner: FORGE/fournos-launcher
~~     display_name: Forge Job
~~     pipeline_name: forge-test-only
~~     env:
~~       JOB_TYPE: presubmit
~~       JOB_NAME: pull-ci-openshift-psap-forge-main-fournos
~~       JOB_SPEC: '{"type":"presubmit","job":"pull-ci-openshift-psap-forge-main-fournos","buildid":"2042530006436941824","prowjobid":"17596524-d614-48ab-862c-2265287d54bc","refs":{"org":"openshift-psap","repo":"forge","repo_link":"https://github.com/openshift-psap/forge","base_ref":"main","base_sha":"24d458480637834350b56ca99aae84f5a18ccb1f","base_link":"https://github.com/openshift-psap/forge/commit/24d458480637834350b56ca99aae84f5a18ccb1f","pulls":[{"number":21,"author":"kpouget","sha":"e13d6e02449b8e25d972df27ecd09626c448569c","title":"[fournos-launcher]
~~         Update to the latest version","head_ref":"launcher","link":"https://github.com/openshift-psap/forge/pull/21","commit_link":"https://github.com/openshift-psap/forge/pull/21/commits/e13d6e02449b8e25d972df27ecd09626c448569c","author_link":"https://github.com/kpouget"}]},"decoration_config":{"timeout":"23h0m0s","grace_period":"15s","utility_images":{"clonerefs":"us-docker.pkg.dev/k8s-infra-prow/images/clonerefs:v20260408-3bbc91829","initupload":"us-docker.pkg.dev/k8s-infra-prow/images/initupload:v20260408-3bbc91829","entrypoint":"us-docker.pkg.dev/k8s-infra-prow/images/entrypoint:v20260408-3bbc91829","sidecar":"us-docker.pkg.dev/k8s-infra-prow/images/sidecar:v20260408-3bbc91829"},"resources":{"clonerefs":{"limits":{"memory":"3Gi"},"requests":{"cpu":"100m","memory":"500Mi"}},"initupload":{"limits":{"memory":"200Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"place_entrypoint":{"limits":{"memory":"100Mi"},"requests":{"cpu":"100m","memory":"25Mi"}},"sidecar":{"limits":{"memory":"2Gi"},"requests":{"cpu":"100m","memory":"250Mi"}}},"gcs_configuration":{"bucket":"test-platform-results","path_strategy":"single","default_org":"openshift","default_repo":"origin","mediaTypes":{"log":"text/plain"},"compress_file_types":["txt","log","json","tar","html","yaml"]},"gcs_credentials_secret":"gce-sa-credentials-gcs-publisher","skip_cloning":true,"censor_secrets":true,"censoring_options":{"minimum_secret_length":6}}}'
~~       OPENSHIFT_CI: 'true'
~~       JOB_NAME_SAFE: fournos
~~       BUILD_ID: '2042530006436941824'
~~       PULL_PULL_SHA: e13d6e02449b8e25d972df27ecd09626c448569c
~~       PULL_NUMBER: '21'
~~       PULL_BASE_REF: main
~~       REPO_NAME: forge
~~       REPO_OWNER: openshift-psap
~~       PULL_BASE_SHA: 24d458480637834350b56ca99aae84f5a18ccb1f
~~       PULL_TITLE: '[fournos-launcher] Update to the latest version'
~~       PULL_REFS: main:24d458480637834350b56ca99aae84f5a18ccb1f,21:e13d6e02449b8e25d972df27ecd09626c448569c
~~       PULL_HEAD_REF: launcher
~~     artifact_dir: /logs/artifacts/001__submit_and_wait
~~ CONTEXT:
~~     final_job_name: forge-llm-d-20260410-090816
~~     manifest_file: /logs/artifacts/001__submit_and_wait/src/forge-llm-d-20260410-090816-manifest.yaml
~~
~~ EXCEPTION: RuntimeError
~~     Job forge-llm-d-20260410-090816 failed: Tasks Completed: 1 (Failed: 1, Cancelled 0), Skipped: 0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


[...]

• Execution logs

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev

@psap-forge-bot

Copy link
Copy Markdown

🔴 Test of 'fournos_launcher submit' failed after 00 hours 00 minutes 26 seconds 🔴

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev

• Failure indicator:

## /logs/artifacts/FAILURE 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
~~ projects/fournos_launcher/toolbox/submit_and_wait/main.py:152
~~ TASK: wait_for_job_completion: Wait for FOURNOS job to complete
~~ ARTIFACT_DIR: /logs/artifacts/001__submit_and_wait
~~ LOG_FILE: /logs/artifacts/001__submit_and_wait/task.log
~~ ARGS:
~~     cluster_name: cluster-1
~~     project: llm_d
~~     args:
~~     - cks
~~     variables_overrides:
~~       prepare.namespace.name: kpouget-dev
~~     job_name: ''
~~     namespace: psap-automation-wip
~~     owner: FORGE/fournos-launcher
~~     display_name: Forge Job
~~     pipeline_name: forge-test-only
~~     env:
~~       JOB_TYPE: presubmit
~~       JOB_NAME: pull-ci-openshift-psap-forge-main-fournos
~~       JOB_SPEC: '{"type":"presubmit","job":"pull-ci-openshift-psap-forge-main-fournos","buildid":"2042532348691484672","prowjobid":"9e3ddff8-13fd-47aa-96bf-1978b5316aa4","refs":{"org":"openshift-psap","repo":"forge","repo_link":"https://github.com/openshift-psap/forge","base_ref":"main","base_sha":"24d458480637834350b56ca99aae84f5a18ccb1f","base_link":"https://github.com/openshift-psap/forge/commit/24d458480637834350b56ca99aae84f5a18ccb1f","pulls":[{"number":21,"author":"kpouget","sha":"e13d6e02449b8e25d972df27ecd09626c448569c","title":"[fournos-launcher]
~~         Update to the latest version","head_ref":"launcher","link":"https://github.com/openshift-psap/forge/pull/21","commit_link":"https://github.com/openshift-psap/forge/pull/21/commits/e13d6e02449b8e25d972df27ecd09626c448569c","author_link":"https://github.com/kpouget"}]},"decoration_config":{"timeout":"23h0m0s","grace_period":"15s","utility_images":{"clonerefs":"us-docker.pkg.dev/k8s-infra-prow/images/clonerefs:v20260408-3bbc91829","initupload":"us-docker.pkg.dev/k8s-infra-prow/images/initupload:v20260408-3bbc91829","entrypoint":"us-docker.pkg.dev/k8s-infra-prow/images/entrypoint:v20260408-3bbc91829","sidecar":"us-docker.pkg.dev/k8s-infra-prow/images/sidecar:v20260408-3bbc91829"},"resources":{"clonerefs":{"limits":{"memory":"3Gi"},"requests":{"cpu":"100m","memory":"500Mi"}},"initupload":{"limits":{"memory":"200Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"place_entrypoint":{"limits":{"memory":"100Mi"},"requests":{"cpu":"100m","memory":"25Mi"}},"sidecar":{"limits":{"memory":"2Gi"},"requests":{"cpu":"100m","memory":"250Mi"}}},"gcs_configuration":{"bucket":"test-platform-results","path_strategy":"single","default_org":"openshift","default_repo":"origin","mediaTypes":{"log":"text/plain"},"compress_file_types":["txt","log","json","tar","html","yaml"]},"gcs_credentials_secret":"gce-sa-credentials-gcs-publisher","skip_cloning":true,"censor_secrets":true,"censoring_options":{"minimum_secret_length":6}}}'
~~       OPENSHIFT_CI: 'true'
~~       JOB_NAME_SAFE: fournos
~~       BUILD_ID: '2042532348691484672'
~~       PULL_PULL_SHA: e13d6e02449b8e25d972df27ecd09626c448569c
~~       PULL_NUMBER: '21'
~~       PULL_BASE_REF: main
~~       REPO_NAME: forge
~~       REPO_OWNER: openshift-psap
~~       PULL_BASE_SHA: 24d458480637834350b56ca99aae84f5a18ccb1f
~~       PULL_TITLE: '[fournos-launcher] Update to the latest version'
~~       PULL_REFS: main:24d458480637834350b56ca99aae84f5a18ccb1f,21:e13d6e02449b8e25d972df27ecd09626c448569c
~~       PULL_HEAD_REF: launcher
~~     artifact_dir: /logs/artifacts/001__submit_and_wait
~~ CONTEXT:
~~     final_job_name: forge-llm-d-20260410-091750
~~     manifest_file: /logs/artifacts/001__submit_and_wait/src/forge-llm-d-20260410-091750-manifest.yaml
~~
~~ EXCEPTION: RuntimeError
~~     Job forge-llm-d-20260410-091750 failed: Tasks Completed: 1 (Failed: 1, Cancelled 0), Skipped: 0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


[...]

• Execution logs

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev

@psap-forge-bot

Copy link
Copy Markdown

🔴 Test of 'fournos_launcher submit' failed after 00 hours 00 minutes 26 seconds 🔴

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev

• Failure indicator:

## /logs/artifacts/FAILURE 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
~~ projects/fournos_launcher/toolbox/submit_and_wait/main.py:152
~~ TASK: wait_for_job_completion: Wait for FOURNOS job to complete
~~ ARTIFACT_DIR: /logs/artifacts/001__submit_and_wait
~~ LOG_FILE: /logs/artifacts/001__submit_and_wait/task.log
~~ ARGS:
~~     cluster_name: cluster-1
~~     project: llm_d
~~     args:
~~     - cks
~~     variables_overrides:
~~       prepare.namespace.name: kpouget-dev
~~     job_name: ''
~~     namespace: psap-automation-wip
~~     owner: FORGE/fournos-launcher
~~     display_name: Forge Job
~~     pipeline_name: forge-test-only
~~     env:
~~       JOB_TYPE: presubmit
~~       JOB_NAME: pull-ci-openshift-psap-forge-main-fournos
~~       JOB_SPEC: '{"type":"presubmit","job":"pull-ci-openshift-psap-forge-main-fournos","buildid":"2042533121538134016","prowjobid":"38a5db15-f96a-41c9-bd63-3ff069e50aa5","refs":{"org":"openshift-psap","repo":"forge","repo_link":"https://github.com/openshift-psap/forge","base_ref":"main","base_sha":"24d458480637834350b56ca99aae84f5a18ccb1f","base_link":"https://github.com/openshift-psap/forge/commit/24d458480637834350b56ca99aae84f5a18ccb1f","pulls":[{"number":21,"author":"kpouget","sha":"76cd8ed2aefd1cb2978d1149594c710a324d05a7","title":"[fournos-launcher]
~~         Update to the latest version","head_ref":"launcher","link":"https://github.com/openshift-psap/forge/pull/21","commit_link":"https://github.com/openshift-psap/forge/pull/21/commits/76cd8ed2aefd1cb2978d1149594c710a324d05a7","author_link":"https://github.com/kpouget"}]},"decoration_config":{"timeout":"23h0m0s","grace_period":"15s","utility_images":{"clonerefs":"us-docker.pkg.dev/k8s-infra-prow/images/clonerefs:v20260408-3bbc91829","initupload":"us-docker.pkg.dev/k8s-infra-prow/images/initupload:v20260408-3bbc91829","entrypoint":"us-docker.pkg.dev/k8s-infra-prow/images/entrypoint:v20260408-3bbc91829","sidecar":"us-docker.pkg.dev/k8s-infra-prow/images/sidecar:v20260408-3bbc91829"},"resources":{"clonerefs":{"limits":{"memory":"3Gi"},"requests":{"cpu":"100m","memory":"500Mi"}},"initupload":{"limits":{"memory":"200Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"place_entrypoint":{"limits":{"memory":"100Mi"},"requests":{"cpu":"100m","memory":"25Mi"}},"sidecar":{"limits":{"memory":"2Gi"},"requests":{"cpu":"100m","memory":"250Mi"}}},"gcs_configuration":{"bucket":"test-platform-results","path_strategy":"single","default_org":"openshift","default_repo":"origin","mediaTypes":{"log":"text/plain"},"compress_file_types":["txt","log","json","tar","html","yaml"]},"gcs_credentials_secret":"gce-sa-credentials-gcs-publisher","skip_cloning":true,"censor_secrets":true,"censoring_options":{"minimum_secret_length":6}}}'
~~       OPENSHIFT_CI: 'true'
~~       JOB_NAME_SAFE: fournos
~~       BUILD_ID: '2042533121538134016'
~~       PULL_PULL_SHA: 76cd8ed2aefd1cb2978d1149594c710a324d05a7
~~       PULL_NUMBER: '21'
~~       PULL_BASE_REF: main
~~       REPO_NAME: forge
~~       REPO_OWNER: openshift-psap
~~       PULL_BASE_SHA: 24d458480637834350b56ca99aae84f5a18ccb1f
~~       PULL_TITLE: '[fournos-launcher] Update to the latest version'
~~       PULL_REFS: main:24d458480637834350b56ca99aae84f5a18ccb1f,21:76cd8ed2aefd1cb2978d1149594c710a324d05a7
~~       PULL_HEAD_REF: launcher
~~     artifact_dir: /logs/artifacts/001__submit_and_wait
~~ CONTEXT:
~~     final_job_name: forge-llm-d-20260410-092057
~~     manifest_file: /logs/artifacts/001__submit_and_wait/src/forge-llm-d-20260410-092057-manifest.yaml
~~
~~ EXCEPTION: RuntimeError
~~     Job forge-llm-d-20260410-092057 failed: Tasks Completed: 1 (Failed: 1, Cancelled 0), Skipped: 0
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


[...]

• Execution logs

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@projects/core/library/config.py`:
- Around line 91-93: The loop overwrites existing ci_job entries by
unconditionally setting self.config["ci_job"]["name"/"project"/"args"] = None;
change it to only initialize missing keys (e.g., use setdefault or check if the
key is absent) so existing values are preserved; modify the code that touches
self.config["ci_job"] in this module (the section currently iterating for name
in "name", "project", "args") to only assign None when the key is not present.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fc61b47f-052c-42c9-a998-ec97d5ac0a9e

📥 Commits

Reviewing files that changed from the base of the PR and between e13d6e0 and 76cd8ed.

📒 Files selected for processing (1)
  • projects/core/library/config.py

Comment thread projects/core/library/config.py Outdated
@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev

@psap-forge-bot

Copy link
Copy Markdown

🟢 Test of 'fournos_launcher submit' succeeded after 00 hours 00 minutes 26 seconds 🟢

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dev

• Execution logs

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
projects/core/ci_entrypoint/prepare_ci.py (1)

206-209: Make FOURNOS_CI detection tolerant to common truthy values.

Line 206 currently requires exact 'true', which can silently route to the wrong parser for values like True/1/yes.

Suggested adjustment
-    if os.environ.get('FOURNOS_CI') == 'true':
+    fournos_ci = os.environ.get('FOURNOS_CI', '').strip().lower() in ('1', 'true', 'yes', 'on')
+    if fournos_ci:
         return parse_and_save_pr_arguments_fournos()
     else:
         return parse_and_save_pr_arguments_ocpci()
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@projects/core/ci_entrypoint/prepare_ci.py` around lines 206 - 209, The
current check os.environ.get('FOURNOS_CI') == 'true' is too strict; replace it
by normalizing the env var and checking against common truthy values (e.g., val
= os.environ.get('FOURNOS_CI', '').strip().lower(); if val in
{'1','true','yes','on'}: return parse_and_save_pr_arguments_fournos() else:
return parse_and_save_pr_arguments_ocpci()) so
parse_and_save_pr_arguments_fournos and parse_and_save_pr_arguments_ocpci are
chosen correctly for inputs like "True", "1", "yes", or "on".
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@projects/core/ci_entrypoint/prepare_ci.py`:
- Around line 212-242: The function
transform_fournos_config_to_variable_overrides should validate the incoming
forge_config schema and types before using keys like 'project', 'args', and
'configOverrides'; specifically ensure forge_config is a dict, that 'project'
and 'args' are of expected types (or missing), and that config_overrides =
forge_config.get('configOverrides', {}) is a dict — if not, raise a clear
ValueError (or coerce only when safe) explaining the invalid FOURNOS config
instead of allowing a subsequent TypeError; update the function to perform these
checks at the top and use the validated values when setting 'project.name',
'project.args', and merging configOverrides.

---

Nitpick comments:
In `@projects/core/ci_entrypoint/prepare_ci.py`:
- Around line 206-209: The current check os.environ.get('FOURNOS_CI') == 'true'
is too strict; replace it by normalizing the env var and checking against common
truthy values (e.g., val = os.environ.get('FOURNOS_CI', '').strip().lower(); if
val in {'1','true','yes','on'}: return parse_and_save_pr_arguments_fournos()
else: return parse_and_save_pr_arguments_ocpci()) so
parse_and_save_pr_arguments_fournos and parse_and_save_pr_arguments_ocpci are
chosen correctly for inputs like "True", "1", "yes", or "on".
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f1edcf6e-29fa-4c82-80af-734e1c8a007f

📥 Commits

Reviewing files that changed from the base of the PR and between 76cd8ed and 619b765.

📒 Files selected for processing (1)
  • projects/core/ci_entrypoint/prepare_ci.py

Comment on lines +212 to +242
def transform_fournos_config_to_variable_overrides(forge_config: dict) -> dict:
"""
Transform FOURNOS forge_config format to variable_overrides format.

Args:
forge_config: Dictionary containing FOURNOS config with keys:
- project: project name
- args: list of arguments
- configOverrides: dict of config overrides

Returns:
Dictionary in variable_overrides format:
- project -> project.name
- args -> project.args
- configOverrides entries are flattened directly
"""
variable_overrides = {}

# Transform project -> project.name
if 'project' in forge_config:
variable_overrides['project.name'] = forge_config['project']

# Transform args -> project.args
if 'args' in forge_config:
variable_overrides['project.args'] = forge_config['args']

# Add all configOverrides entries directly (flatten them)
config_overrides = forge_config.get('configOverrides', {})
variable_overrides.update(config_overrides)

return variable_overrides

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Validate FOURNOS config schema before transforming/writing.

Line 269 can return None/non-dict, and Lines 239-240 assume configOverrides is a dict. This can fail with opaque errors instead of a clear config validation failure.

Proposed hardening
 def transform_fournos_config_to_variable_overrides(forge_config: dict) -> dict:
@@
-    variable_overrides = {}
+    if not isinstance(forge_config, dict):
+        raise ValueError("forge_config.yaml must contain a top-level mapping")
+
+    variable_overrides = {}
@@
-    if 'args' in forge_config:
-        variable_overrides['project.args'] = forge_config['args']
+    if 'args' in forge_config:
+        if not isinstance(forge_config['args'], list):
+            raise ValueError("forge_config.yaml: 'args' must be a list")
+        variable_overrides['project.args'] = forge_config['args']
@@
-    config_overrides = forge_config.get('configOverrides', {})
+    config_overrides = forge_config.get('configOverrides', {})
+    if config_overrides is None:
+        config_overrides = {}
+    if not isinstance(config_overrides, dict):
+        raise ValueError("forge_config.yaml: 'configOverrides' must be a mapping")
     variable_overrides.update(config_overrides)

Also applies to: 268-270, 283-287

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@projects/core/ci_entrypoint/prepare_ci.py` around lines 212 - 242, The
function transform_fournos_config_to_variable_overrides should validate the
incoming forge_config schema and types before using keys like 'project', 'args',
and 'configOverrides'; specifically ensure forge_config is a dict, that
'project' and 'args' are of expected types (or missing), and that
config_overrides = forge_config.get('configOverrides', {}) is a dict — if not,
raise a clear ValueError (or coerce only when safe) explaining the invalid
FOURNOS config instead of allowing a subsequent TypeError; update the function
to perform these checks at the top and use the validated values when setting
'project.name', 'project.args', and merging configOverrides.

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

@psap-forge-bot

Copy link
Copy Markdown

🟢 Test of 'fournos_launcher submit' succeeded after 00 hours 00 minutes 26 seconds 🟢

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

• Execution logs

@psap-forge-bot

Copy link
Copy Markdown

🟢 Test of 'fournos_launcher submit' succeeded after 00 hours 00 minutes 27 seconds 🟢

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

• Execution logs

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

@psap-forge-bot

Copy link
Copy Markdown

🟢 Test of 'fournos_launcher submit' succeeded after 00 hours 00 minutes 27 seconds 🟢

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

• Execution logs

@kpouget

kpouget commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

@psap-forge-bot

Copy link
Copy Markdown

🟢 Test of 'fournos_launcher submit' succeeded after 00 hours 00 minutes 55 seconds 🟢

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/var fournos.namespace: psap-automation-wip
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

• Execution logs

@kpouget

kpouget commented Apr 13, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

@psap-forge-bot

Copy link
Copy Markdown

🔴 Test of 'fournos_launcher submit' failed after 00 hours 00 minutes 06 seconds 🔴

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

• Failure indicator:

## /logs/artifacts/FAILURE 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
~~ projects/fournos_launcher/toolbox/submit_and_wait/main.py:161
~~ TASK: wait_for_job_completion: Wait for FOURNOS job to complete
~~ ARTIFACT_DIR: /logs/artifacts/001__submit_and_wait
~~ LOG_FILE: /logs/artifacts/001__submit_and_wait/task.log
~~ ARGS:
~~     cluster_name: cluster-1
~~     project: llm_d
~~     args:
~~     - cks
~~     variables_overrides:
~~       prepare.namespace.name: kpouget-dash
~~     job_name: ''
~~     namespace: psap-automation
~~     owner: FORGE/fournos-launcher
~~     display_name: Forge Job
~~     pipeline_name: forge-test-only
~~     env:
~~       JOB_TYPE: presubmit
~~       JOB_NAME: pull-ci-openshift-psap-forge-main-fournos
~~       JOB_SPEC: '{"type":"presubmit","job":"pull-ci-openshift-psap-forge-main-fournos","buildid":"2043680218115215360","prowjobid":"1784e419-430b-41a5-8b1a-063b4dd89169","refs":{"org":"openshift-psap","repo":"forge","repo_link":"https://github.com/openshift-psap/forge","base_ref":"main","base_sha":"24d458480637834350b56ca99aae84f5a18ccb1f","base_link":"https://github.com/openshift-psap/forge/commit/24d458480637834350b56ca99aae84f5a18ccb1f","pulls":[{"number":21,"author":"kpouget","sha":"1124cc9da7b3a9cb534a1098f87d7cbc7054138c","title":"[fournos-launcher]
~~         Update to the latest version","head_ref":"launcher","link":"https://github.com/openshift-psap/forge/pull/21","commit_link":"https://github.com/openshift-psap/forge/pull/21/commits/1124cc9da7b3a9cb534a1098f87d7cbc7054138c","author_link":"https://github.com/kpouget"}]},"decoration_config":{"timeout":"23h0m0s","grace_period":"15s","utility_images":{"clonerefs":"us-docker.pkg.dev/k8s-infra-prow/images/clonerefs:v20260408-3bbc91829","initupload":"us-docker.pkg.dev/k8s-infra-prow/images/initupload:v20260408-3bbc91829","entrypoint":"us-docker.pkg.dev/k8s-infra-prow/images/entrypoint:v20260408-3bbc91829","sidecar":"us-docker.pkg.dev/k8s-infra-prow/images/sidecar:v20260408-3bbc91829"},"resources":{"clonerefs":{"limits":{"memory":"3Gi"},"requests":{"cpu":"100m","memory":"500Mi"}},"initupload":{"limits":{"memory":"200Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"place_entrypoint":{"limits":{"memory":"100Mi"},"requests":{"cpu":"100m","memory":"25Mi"}},"sidecar":{"limits":{"memory":"2Gi"},"requests":{"cpu":"100m","memory":"250Mi"}}},"gcs_configuration":{"bucket":"test-platform-results","path_strategy":"single","default_org":"openshift","default_repo":"origin","mediaTypes":{"log":"text/plain"},"compress_file_types":["txt","log","json","tar","html","yaml"]},"gcs_credentials_secret":"gce-sa-credentials-gcs-publisher","skip_cloning":true,"censor_secrets":true,"censoring_options":{"minimum_secret_length":6}}}'
~~       OPENSHIFT_CI: 'true'
~~       JOB_NAME_SAFE: fournos
~~       BUILD_ID: '2043680218115215360'
~~       PULL_PULL_SHA: 1124cc9da7b3a9cb534a1098f87d7cbc7054138c
~~       PULL_NUMBER: '21'
~~       PULL_BASE_REF: main
~~       REPO_NAME: forge
~~       REPO_OWNER: openshift-psap
~~       PULL_BASE_SHA: 24d458480637834350b56ca99aae84f5a18ccb1f
~~       PULL_TITLE: '[fournos-launcher] Update to the latest version'
~~       PULL_REFS: main:24d458480637834350b56ca99aae84f5a18ccb1f,21:1124cc9da7b3a9cb534a1098f87d7cbc7054138c
~~       PULL_HEAD_REF: launcher
~~     status_dest: /logs/artifacts
~~     artifact_dir: /logs/artifacts/001__submit_and_wait
~~ CONTEXT:
~~     final_job_name: forge-llm-d-20260413-133146
~~     manifest_file: /logs/artifacts/001__submit_and_wait/src/forge-llm-d-20260413-133146-manifest.yaml
~~
~~ EXCEPTION: RuntimeError
~~     Job forge-llm-d-20260413-133146 failed: Failed to create Workload: Forbidden
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


[...]

• Execution logs

@kpouget

kpouget commented Apr 13, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

@psap-forge-bot

Copy link
Copy Markdown

🔴 Test of 'fournos_launcher submit' failed after 00 hours 00 minutes 16 seconds 🔴

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

• Failure indicator:

## /logs/artifacts/FAILURE 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
~~ projects/fournos_launcher/toolbox/submit_and_wait/main.py:161
~~ TASK: wait_for_job_completion: Wait for FOURNOS job to complete
~~ ARTIFACT_DIR: /logs/artifacts/001__submit_and_wait
~~ LOG_FILE: /logs/artifacts/001__submit_and_wait/task.log
~~ ARGS:
~~     cluster_name: cluster-1
~~     project: llm_d
~~     args:
~~     - cks
~~     variables_overrides:
~~       prepare.namespace.name: kpouget-dash
~~     job_name: ''
~~     namespace: psap-automation
~~     owner: FORGE/fournos-launcher
~~     display_name: Forge Job
~~     pipeline_name: forge-test-only
~~     env:
~~       JOB_TYPE: presubmit
~~       JOB_NAME: pull-ci-openshift-psap-forge-main-fournos
~~       JOB_SPEC: '{"type":"presubmit","job":"pull-ci-openshift-psap-forge-main-fournos","buildid":"2043689784097902592","prowjobid":"419bada2-4e8f-4cee-95f2-9393048306ef","refs":{"org":"openshift-psap","repo":"forge","repo_link":"https://github.com/openshift-psap/forge","base_ref":"main","base_sha":"24d458480637834350b56ca99aae84f5a18ccb1f","base_link":"https://github.com/openshift-psap/forge/commit/24d458480637834350b56ca99aae84f5a18ccb1f","pulls":[{"number":21,"author":"kpouget","sha":"1124cc9da7b3a9cb534a1098f87d7cbc7054138c","title":"[fournos-launcher]
~~         Update to the latest version","head_ref":"launcher","link":"https://github.com/openshift-psap/forge/pull/21","commit_link":"https://github.com/openshift-psap/forge/pull/21/commits/1124cc9da7b3a9cb534a1098f87d7cbc7054138c","author_link":"https://github.com/kpouget"}]},"decoration_config":{"timeout":"23h0m0s","grace_period":"15s","utility_images":{"clonerefs":"us-docker.pkg.dev/k8s-infra-prow/images/clonerefs:v20260408-3bbc91829","initupload":"us-docker.pkg.dev/k8s-infra-prow/images/initupload:v20260408-3bbc91829","entrypoint":"us-docker.pkg.dev/k8s-infra-prow/images/entrypoint:v20260408-3bbc91829","sidecar":"us-docker.pkg.dev/k8s-infra-prow/images/sidecar:v20260408-3bbc91829"},"resources":{"clonerefs":{"limits":{"memory":"3Gi"},"requests":{"cpu":"100m","memory":"500Mi"}},"initupload":{"limits":{"memory":"200Mi"},"requests":{"cpu":"100m","memory":"50Mi"}},"place_entrypoint":{"limits":{"memory":"100Mi"},"requests":{"cpu":"100m","memory":"25Mi"}},"sidecar":{"limits":{"memory":"2Gi"},"requests":{"cpu":"100m","memory":"250Mi"}}},"gcs_configuration":{"bucket":"test-platform-results","path_strategy":"single","default_org":"openshift","default_repo":"origin","mediaTypes":{"log":"text/plain"},"compress_file_types":["txt","log","json","tar","html","yaml"]},"gcs_credentials_secret":"gce-sa-credentials-gcs-publisher","skip_cloning":true,"censor_secrets":true,"censoring_options":{"minimum_secret_length":6}}}'
~~       OPENSHIFT_CI: 'true'
~~       JOB_NAME_SAFE: fournos
~~       BUILD_ID: '2043689784097902592'
~~       PULL_PULL_SHA: 1124cc9da7b3a9cb534a1098f87d7cbc7054138c
~~       PULL_NUMBER: '21'
~~       PULL_BASE_REF: main
~~       REPO_NAME: forge
~~       REPO_OWNER: openshift-psap
~~       PULL_BASE_SHA: 24d458480637834350b56ca99aae84f5a18ccb1f
~~       PULL_TITLE: '[fournos-launcher] Update to the latest version'
~~       PULL_REFS: main:24d458480637834350b56ca99aae84f5a18ccb1f,21:1124cc9da7b3a9cb534a1098f87d7cbc7054138c
~~       PULL_HEAD_REF: launcher
~~     status_dest: /logs/artifacts
~~     artifact_dir: /logs/artifacts/001__submit_and_wait
~~ CONTEXT:
~~     final_job_name: forge-llm-d-20260413-135707
~~     manifest_file: /logs/artifacts/001__submit_and_wait/src/forge-llm-d-20260413-135707-manifest.yaml
~~
~~ EXCEPTION: RuntimeError
~~     Job forge-llm-d-20260413-135707 failed: [User error] PipelineRun psap-automation/forge-llm-d-20260413-135707 is missing some parameters required by Pipeline psap-automation/forge-test-only: pipelineRun missing parameters: [forge-preset]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


[...]

• Execution logs

@openshift-ci

openshift-ci Bot commented Apr 13, 2026 •

Copy link
Copy Markdown

@kpouget: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/jump-ci e13d6e0 link true /test jump-ci

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@kpouget

kpouget commented Apr 13, 2026

Copy link
Copy Markdown
Contributor Author

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

@psap-forge-bot

Copy link
Copy Markdown

🟢 Test of 'fournos_launcher submit' succeeded after 00 hours 00 minutes 27 seconds 🟢

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos llm_d cks
/cluster cluster-1
/var prepare.namespace.name: kpouget-dash

• Execution logs

@kpouget kpouget changed the title [fournos-launcher] Update to the latest version [fournos-launcher] Make it work with FOURNOS v0.3.1 Apr 13, 2026
@kpouget

kpouget commented Apr 13, 2026

Copy link
Copy Markdown
Contributor Author

test passed, merging this 👍🏻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant