Skip to content

[Fournos testing] Continue the foreign testing integration#32

Merged
kpouget merged 8 commits intomainfrom
fournos-testing
Apr 16, 2026
Merged

[Fournos testing] Continue the foreign testing integration#32
kpouget merged 8 commits intomainfrom
fournos-testing

Conversation

@kpouget
Copy link
Copy Markdown
Contributor

@kpouget kpouget commented Apr 16, 2026

Summary by CodeRabbit

  • New Features

    • CLI submit gains optional --project-path to specify a project location.
    • Added configurable launch settings for foreign testing (project/operation/args).
  • Bug Fixes

    • Build artifact capture now saves separate logs per container and init-container.
    • Submission now validates that the provided project path exists and errors if missing.
  • Behavior Changes

    • Command-line args are passed through unchanged; signal/dual-output shutdown and CI script error reporting adjusted.

@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Apr 16, 2026

[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 mml-coder 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
Copy link
Copy Markdown

coderabbitai bot commented Apr 16, 2026

Warning

Rate limit exceeded

@kpouget has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 56 minutes and 23 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 56 minutes and 23 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1d8146d0-a0ee-4e3e-90c9-367c2834cff9

📥 Commits

Reviewing files that changed from the base of the PR and between ca5ae3b and 0391c04.

📒 Files selected for processing (3)
  • projects/core/ci_entrypoint/run_ci.py
  • projects/foreign_testing/orchestration/config.yaml
  • projects/foreign_testing/orchestration/foreign_testing.py
📝 Walkthrough

Walkthrough

Adds per-container and init-container log capture for build pods, adjusts CI entrypoint signal/argument handling and error messages, and makes foreign-testing launch parameters configurable with CLI and submit-time project-path validation.

Changes

Cohort / File(s) Summary
Container Log Capture
projects/cluster/toolbox/build_image/main.py, projects/cluster/toolbox/rebuild_image/main.py
Added _capture_all_container_logs(pod_name: str, namespace: str, artifact_dir) to enumerate .spec.containers[*].name and .spec.initContainers[*].name (via oc get pod -o jsonpath=...) and write per-container logs under artifact_dir/artifacts/. Replaced prior single oc logs ... dumps with calls to this helper in build-wait and artifact-capture code paths.
CI Entrypoint / runtime args & signals
projects/core/ci_entrypoint/run_ci.py
Changed signal cleanup to call prepare_ci.shutdown_dual_output() without swallowing exceptions; only enable dual-output when appropriate (skip if not a TTY and ARTIFACT_DIR/run.log already exists); improved missing-CI-script error to show script_path relative to FORGE_HOME; removed underscore→hyphen argument conversion and now append raw args to subprocess command.
Foreign Testing: config-driven launch & CLI validation
projects/foreign_testing/orchestration/foreign_testing.py, projects/foreign_testing/orchestration/cli.py, projects/foreign_testing/orchestration/ci.py, projects/foreign_testing/orchestration/config.yaml
Added get_project_config(foreign_repo_id=None) to resolve foreign_testing.<id> config and use it in prepare() and submit(). submit(project_path=None) now derives (project, operation, launch_args) from config, optionally prepends --project-source <path> when project_path provided, and validates project_path.exists() (raises ValueError if missing). CLI submit gained a --project-path option forwarding the chosen path to foreign_testing.submit. Config updated with a launch block (project, operation, args).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 I hop through pods and logs so bright,
I nibble init-logs deep at night,
Paths checked, args passed straight and true,
Each container speaks — I listen too.
Hooray for builds with logs anew! 🥕

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 77.78% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changeset focus: continued integration of foreign testing (Fournos) across multiple orchestration modules, CLI updates, and container logging enhancements.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fournos-testing

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.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
projects/core/ci_entrypoint/run_ci.py (1)

424-434: ⚠️ Potential issue | 🟡 Minor

Keep the existence check and chmod hint on the absolute path.

Line 424 turns script_path into a repo-relative path, but Line 426 still uses it for .exists() and Line 434 prints it in the remediation command. When this entrypoint runs outside FORGE_HOME, an existing non-executable script is misclassified as missing, and the suggested chmod path is wrong. Keep an absolute path for filesystem checks and derive a separate relative path only for display.

Suggested fix
-        script_path = project_dir.relative_to(FORGE_HOME) / "orchestration" / f"{operation}.py"
+        abs_script_path = project_dir / "orchestration" / f"{operation}.py"
+        script_path = abs_script_path.relative_to(FORGE_HOME)

-        if script_path.exists():
+        if abs_script_path.exists():
             click.echo(
                 click.style(
                     f"❌ ERROR: CI script '{script_path} 'exists but is not executable for project '{project}' operation '{operation}'.",
                     fg='red'
                 ),
                 err=True
             )
-            click.echo(f"💡 Fix with: chmod +x {script_path}")
+            click.echo(f"💡 Fix with: chmod +x {abs_script_path}")
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@projects/core/ci_entrypoint/run_ci.py` around lines 424 - 434, The code makes
script_path repo-relative then uses it for filesystem checks and the chmod hint,
causing false negatives and wrong remediation when running outside FORGE_HOME;
change to compute an absolute path for filesystem operations (e.g.,
abs_script_path = project_dir / "orchestration" / f"{operation}.py") and
separately derive a display-relative path for messages (e.g., rel_script_path =
abs_script_path.relative_to(FORGE_HOME) or similar). Use
abs_script_path.exists() for the existence check and print the chmod hint with
the absolute path, while using rel_script_path only in user-facing explanatory
text.
🤖 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/cluster/toolbox/rebuild_image/main.py`:
- Around line 37-89: The _capture_all_container_logs helper expects a Kubernetes
Pod name but callers pass ctx.buildrun_name (a BuildRun name), so oc get pod
fails; before invoking _capture_all_container_logs, resolve the real pod by
reading the BuildRun.status to find the referenced TaskRun (follow
BuildRun.status.taskRunRef / ownerReferences or status fields) and then read
TaskRun.status.podName (or TaskRun.status.steps[]/podName) to get the actual pod
name; update the caller to fetch the TaskRun reference from the BuildRun (using
the buildrun name), read the TaskRun status.podName, and pass that podName into
_capture_all_container_logs instead of ctx.buildrun_name.

In `@projects/foreign_testing/orchestration/cli.py`:
- Around line 26-32: The Click option for --project-path currently passes a
string; update the click.option on the submit command to use
type=click.Path(..., path_type=pathlib.Path) so Click supplies a pathlib.Path to
submit(ctx, project_path) and to foreign_testing.submit (which calls .exists());
this ensures .exists() works and preserves existing validation/behavior.

---

Outside diff comments:
In `@projects/core/ci_entrypoint/run_ci.py`:
- Around line 424-434: The code makes script_path repo-relative then uses it for
filesystem checks and the chmod hint, causing false negatives and wrong
remediation when running outside FORGE_HOME; change to compute an absolute path
for filesystem operations (e.g., abs_script_path = project_dir / "orchestration"
/ f"{operation}.py") and separately derive a display-relative path for messages
(e.g., rel_script_path = abs_script_path.relative_to(FORGE_HOME) or similar).
Use abs_script_path.exists() for the existence check and print the chmod hint
with the absolute path, while using rel_script_path only in user-facing
explanatory text.
🪄 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: 5a111fff-8ea2-4522-8971-1317634e6f36

📥 Commits

Reviewing files that changed from the base of the PR and between ab1a2ba and 934a892.

📒 Files selected for processing (6)
  • projects/cluster/toolbox/build_image/main.py
  • projects/cluster/toolbox/rebuild_image/main.py
  • projects/core/ci_entrypoint/run_ci.py
  • projects/foreign_testing/orchestration/ci.py
  • projects/foreign_testing/orchestration/cli.py
  • projects/foreign_testing/orchestration/foreign_testing.py

Comment thread projects/cluster/toolbox/build_image/main.py
Comment thread projects/cluster/toolbox/rebuild_image/main.py
Comment thread projects/foreign_testing/orchestration/cli.py Outdated
@kpouget kpouget force-pushed the fournos-testing branch 2 times, most recently from cb23834 to da458a4 Compare April 16, 2026 13:19
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
projects/cluster/toolbox/build_image/main.py (1)

244-245: ⚠️ Potential issue | 🟠 Major

Resolve BuildRun → TaskRun → Pod before calling log capture.

Line 245 and Line 277 still pass a BuildRun name into a helper that runs oc get pod <name>. This is the same unresolved issue from prior review: BuildRun name is not a guaranteed pod name, so container log capture can be skipped.

Proposed fix
-        _capture_all_container_logs(ctx.buildrun_name, args.namespace, args.artifact_dir)
+        pod_name = _resolve_buildrun_pod_name(ctx.buildrun_name, args.namespace)
+        if pod_name:
+            _capture_all_container_logs(pod_name, args.namespace, args.artifact_dir)
-        _capture_all_container_logs(build_run_name, args.namespace, args.artifact_dir)
+        pod_name = _resolve_buildrun_pod_name(build_run_name, args.namespace)
+        if pod_name:
+            _capture_all_container_logs(pod_name, args.namespace, args.artifact_dir)
def _resolve_buildrun_pod_name(buildrun_name: str, namespace: str) -> str | None:
    br = shell.run(
        f"oc get buildruns.shipwright.io {buildrun_name} -n {namespace} -o json",
        check=False,
        log_stdout=False,
    )
    if not br.success:
        logger.warning(f"Could not fetch BuildRun {buildrun_name}")
        return None

    info = json.loads(br.stdout)
    taskrun_name = info.get("status", {}).get("taskRunName") or info.get("status", {}).get(
        "executor", {}
    ).get("name")
    if not taskrun_name:
        logger.warning(f"Could not resolve TaskRun name from BuildRun {buildrun_name}")
        return None

    tr = shell.run(
        f"oc get taskrun {taskrun_name} -n {namespace} -o jsonpath='{{.status.podName}}'",
        check=False,
        log_stdout=False,
    )
    if not tr.success or not tr.stdout.strip():
        logger.warning(f"Could not resolve podName from TaskRun {taskrun_name}")
        return None

    return tr.stdout.strip()
#!/bin/bash
# Verify the name mapping on a live cluster
NS=<namespace>
BR=<buildrun-name>

TR=$(oc get buildruns.shipwright.io "$BR" -n "$NS" -o jsonpath='{.status.taskRunName}')
if [ -z "$TR" ]; then
  TR=$(oc get buildruns.shipwright.io "$BR" -n "$NS" -o jsonpath='{.status.executor.name}')
fi
POD=$(oc get taskrun "$TR" -n "$NS" -o jsonpath='{.status.podName}')

echo "BuildRun: $BR"
echo "TaskRun:  $TR"
echo "Pod:      $POD"

Also applies to: 276-277

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

In `@projects/cluster/toolbox/build_image/main.py` around lines 244 - 245, The
BuildRun name is being passed directly into _capture_all_container_logs which
calls `oc get pod <name>`; instead add a resolver function (e.g.
_resolve_buildrun_pod_name(buildrun_name: str, namespace: str) -> str | None)
that fetches the BuildRun JSON, extracts status.taskRunName or
status.executor.name, then queries the TaskRun for status.podName, returning the
pod name or None; call this resolver before invoking _capture_all_container_logs
(and in the other place where BuildRun was passed), and if it returns None skip
container log capture and log a warning. Ensure you use shell.run with
check=False/log_stdout=False and json parsing to avoid raising on missing fields
and reference the existing _capture_all_container_logs and the new
_resolve_buildrun_pod_name symbols when making the change.
🤖 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/cluster/toolbox/build_image/main.py`:
- Around line 51-57: The debug messages claiming logs were "Captured" are
emitted unconditionally after calls to shell.run with check=False (e.g. the
shell.run(...) that uses pod_name, namespace, container_name and writes to
log_file), which can mislead if oc logs failed; change each such call to capture
the call's result (e.g. result = shell.run(..., check=False)) and only call
logger.debug("Captured logs...") when result indicates success (e.g.
result.returncode == 0) otherwise log an error or warning with the return code
and any stderr; apply the same pattern to the other block around lines 74-79 so
you only emit success debug logs when the command actually succeeded.

---

Duplicate comments:
In `@projects/cluster/toolbox/build_image/main.py`:
- Around line 244-245: The BuildRun name is being passed directly into
_capture_all_container_logs which calls `oc get pod <name>`; instead add a
resolver function (e.g. _resolve_buildrun_pod_name(buildrun_name: str,
namespace: str) -> str | None) that fetches the BuildRun JSON, extracts
status.taskRunName or status.executor.name, then queries the TaskRun for
status.podName, returning the pod name or None; call this resolver before
invoking _capture_all_container_logs (and in the other place where BuildRun was
passed), and if it returns None skip container log capture and log a warning.
Ensure you use shell.run with check=False/log_stdout=False and json parsing to
avoid raising on missing fields and reference the existing
_capture_all_container_logs and the new _resolve_buildrun_pod_name symbols when
making the change.
🪄 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: dbb52146-0172-4d1f-a684-047031837388

📥 Commits

Reviewing files that changed from the base of the PR and between 934a892 and cb23834.

📒 Files selected for processing (7)
  • projects/cluster/toolbox/build_image/main.py
  • projects/cluster/toolbox/rebuild_image/main.py
  • projects/core/ci_entrypoint/run_ci.py
  • projects/foreign_testing/orchestration/ci.py
  • projects/foreign_testing/orchestration/cli.py
  • projects/foreign_testing/orchestration/config.yaml
  • projects/foreign_testing/orchestration/foreign_testing.py
🚧 Files skipped from review as they are similar to previous changes (5)
  • projects/foreign_testing/orchestration/ci.py
  • projects/core/ci_entrypoint/run_ci.py
  • projects/cluster/toolbox/rebuild_image/main.py
  • projects/foreign_testing/orchestration/cli.py
  • projects/foreign_testing/orchestration/foreign_testing.py

Comment thread projects/cluster/toolbox/build_image/main.py
@kpouget
Copy link
Copy Markdown
Contributor Author

kpouget commented Apr 16, 2026

/test forge skeleton
/cluster cluster-1

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
projects/foreign_testing/orchestration/config.yaml (1)

5-11: Minor: inconsistent YAML indentation between sibling blocks.

Children of project_mappings: (line 5) use 8-space indentation (line 6), while children of launch: (line 7) use 6-space indentation (lines 8-11). Both are valid YAML, but the mixed depth is visually confusing. Consider normalizing to a single style (e.g., 6 spaces throughout) for readability.

♻️ Proposed normalization
     project_mappings:
-        fournos_deploy: tests/forge/deploy
+      fournos_deploy: tests/forge/deploy
     launch:
       project: fournos_deploy
       operation: ci
       args:
       - deploy
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@projects/foreign_testing/orchestration/config.yaml` around lines 5 - 11, The
YAML uses inconsistent indentation between the mapping key project_mappings
(children indented 8 spaces) and the launch block (children indented 6 spaces);
normalize the file to use a single consistent indentation level (e.g., 6 spaces)
for child entries under project_mappings and launch so keys like fournos_deploy,
project, operation, and args all align visually and avoid confusion when
editing.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@projects/foreign_testing/orchestration/config.yaml`:
- Around line 5-11: The YAML uses inconsistent indentation between the mapping
key project_mappings (children indented 8 spaces) and the launch block (children
indented 6 spaces); normalize the file to use a single consistent indentation
level (e.g., 6 spaces) for child entries under project_mappings and launch so
keys like fournos_deploy, project, operation, and args all align visually and
avoid confusion when editing.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d36b7905-528e-4cb6-97ea-9e92fd5c2a4b

📥 Commits

Reviewing files that changed from the base of the PR and between cb23834 and ca5ae3b.

📒 Files selected for processing (5)
  • projects/core/ci_entrypoint/run_ci.py
  • projects/foreign_testing/orchestration/ci.py
  • projects/foreign_testing/orchestration/cli.py
  • projects/foreign_testing/orchestration/config.yaml
  • projects/foreign_testing/orchestration/foreign_testing.py
🚧 Files skipped from review as they are similar to previous changes (4)
  • projects/foreign_testing/orchestration/ci.py
  • projects/foreign_testing/orchestration/cli.py
  • projects/core/ci_entrypoint/run_ci.py
  • projects/foreign_testing/orchestration/foreign_testing.py

@kpouget
Copy link
Copy Markdown
Contributor Author

kpouget commented Apr 16, 2026

/test fournos skeleton
/cluster cluster-1

@topsail-bot
Copy link
Copy Markdown

topsail-bot bot commented Apr 16, 2026

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

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos skeleton
/cluster cluster-1

Failure indicator:

## /logs/artifacts/FAILURE 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
~~ projects/fournos_launcher/toolbox/submit_and_wait/main.py:167
~~ 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: skeleton
~~     args: []
~~     variables_overrides: {}
~~     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":"2044856067115978752","prowjobid":"93338f58-66d2-4717-9519-f70efc4cbbcb","refs":{"org":"openshift-psap","repo":"forge","repo_link":"https://github.com/openshift-psap/forge","base_ref":"main","base_sha":"f684fbac7a6b0d90aaa33952dcbf0ff81f1ea235","base_link":"https://github.com/openshift-psap/forge/commit/f684fbac7a6b0d90aaa33952dcbf0ff81f1ea235","pulls":[{"number":32,"author":"kpouget","sha":"0391c04b82e61a6014521bb43a6567bca39c1138","title":"[Fournos
~~         testing] Continue the foreign testing integration","head_ref":"fournos-testing","link":"https://github.com/openshift-psap/forge/pull/32","commit_link":"https://github.com/openshift-psap/forge/pull/32/commits/0391c04b82e61a6014521bb43a6567bca39c1138","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:v20260414-6691f5aff","initupload":"us-docker.pkg.dev/k8s-infra-prow/images/initupload:v20260414-6691f5aff","entrypoint":"us-docker.pkg.dev/k8s-infra-prow/images/entrypoint:v20260414-6691f5aff","sidecar":"us-docker.pkg.dev/k8s-infra-prow/images/sidecar:v20260414-6691f5aff"},"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: '2044856067115978752'
~~       PULL_PULL_SHA: 0391c04b82e61a6014521bb43a6567bca39c1138
~~       PULL_NUMBER: '32'
~~       PULL_BASE_REF: main
~~       REPO_NAME: forge
~~       REPO_OWNER: openshift-psap
~~       PULL_BASE_SHA: f684fbac7a6b0d90aaa33952dcbf0ff81f1ea235
~~       PULL_TITLE: '[Fournos testing] Continue the foreign testing integration'
~~       PULL_REFS: main:f684fbac7a6b0d90aaa33952dcbf0ff81f1ea235,32:0391c04b82e61a6014521bb43a6567bca39c1138
~~       PULL_HEAD_REF: fournos-testing
~~     status_dest: /logs/artifacts
~~     artifact_dir: /logs/artifacts/001__submit_and_wait
~~ CONTEXT:
~~     final_job_name: forge-skeleton-20260416-191318
~~     manifest_file: /logs/artifacts/001__submit_and_wait/src/forge-skeleton-20260416-191318-manifest.yaml
~~
~~ EXCEPTION: RuntimeError
~~     Job forge-skeleton-20260416-191318 failed: Failed to list clusters: Forbidden
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


[...]

Execution logs

@kpouget
Copy link
Copy Markdown
Contributor Author

kpouget commented Apr 16, 2026

/test fournos skeleton
/cluster cluster-1

@topsail-bot
Copy link
Copy Markdown

topsail-bot bot commented Apr 16, 2026

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

• Link to the test results.

• No reports index generated...

Test configuration:

/test fournos skeleton
/cluster cluster-1

Execution logs

@kpouget
Copy link
Copy Markdown
Contributor Author

kpouget commented Apr 16, 2026

FOURNOS test passed in openshift-psap/fournos#30
merge 👍🏻

@kpouget kpouget merged commit fb6fb08 into main Apr 16, 2026
5 of 6 checks passed
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