Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
6144a7b
ci(security): use gpt-6.1-sol with high reasoning effort (#4203)
alangou Oct 6, 2026
305c8b3
Merge remote-tracking branch 'upstream/main'
moulalis Oct 6, 2026
b7afc15
fix(deps): upgrade pageant to address Dependabot alert 38 (#4127)
alangou Oct 6, 2026
4a0208f
fix(ci): stop running e2e in merge queues (#4232)
elezar Oct 6, 2026
33869a1
fix(images): update gateway base and allow supervisor base override (…
alangou Oct 6, 2026
0bca9fb
chore(deps-dev): bump source-map-js in /sdk/typescript (#4224)
dependabot[bot] Oct 6, 2026
8760396
fix(compute): revalidate late exit events after restart (#4235)
SDAChess Oct 6, 2026
da31f1f
Merge remote-tracking branch 'upstream/main'
moulalis Oct 6, 2026
aa108b4
CARRY: fix(konflux): use the odh-openshell-sandbox-openclaw image name
EmilienM Oct 6, 2026
09dca11
Merge remote-tracking branch 'upstream/main'
EmilienM Oct 6, 2026
09443c9
Merge pull request #84 from opendatahub-io/chore/sync-upstream-2026-1…
EmilienM Oct 6, 2026
4f2e026
Merge pull request #83 from opendatahub-io/carry/openclaw-image-name
EmilienM Oct 6, 2026
4c1918f
CI: update Tekton pipelines
github-actions[bot] Oct 6, 2026
3712073
CARRY: fix(konflux): make OpenClaw and e2e PipelineRuns hermetic
EmilienM Oct 6, 2026
8366f70
Merge pull request #80 from opendatahub-io/ci-openshell-1791245528
EmilienM Oct 6, 2026
5601d71
fix(gator): preserve literal Codex account routing identity (#4215)
johntmyers Oct 6, 2026
b03382b
Merge remote-tracking branch 'upstream/main'
moulalis Oct 6, 2026
b1406a7
Merge remote-tracking branch 'upstream/main'
moulalis Oct 6, 2026
8df0b7a
Merge remote-tracking branch 'upstream/main'
moulalis Oct 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .agents/skills/launch-openshell-gator/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ jq -e '.tokens.access_token and .tokens.refresh_token and .tokens.account_id' "$

If this fails, run the local Codex login flow outside the gator launch. If Codex was recently reauthenticated and gateway refresh fails later, relaunch with `--reset-refresh` once.

The launcher passes the non-secret host account ID as literal `CODEX_ACCOUNT_ID` for Codex's local workspace routing. The harness must not use the opaque `CODEX_AUTH_ACCOUNT_ID` credential placeholder for that comparison. Access tokens remain placeholders, and refresh material remains gateway-only.

### Step 5: Verify Gateway Is Registered And Alive

Use the target gateway from the operator request or current session context. Do not assume a gateway name. If the operator did not specify one, list registered gateways and ask before launching when the correct target is ambiguous.
Expand Down
15 changes: 2 additions & 13 deletions .github/workflows/branch-e2e.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
name: Branch E2E Checks

on:
merge_group:
types: [checks_requested]
push:
branches:
- "pull-request/[0-9]+"
Expand Down Expand Up @@ -50,15 +48,6 @@ jobs:
run_kubernetes_ha_e2e="$(jq -r 'index("test:e2e-kubernetes") != null' <<< "$LABELS_JSON")"
run_kubernetes_credential_drivers_e2e="$(jq -r 'index("test:e2e-kubernetes") != null' <<< "$LABELS_JSON")"
;;
merge_group)
# Merge groups have no PR labels. When GPU E2E is required as documented
# in CI.md, skipping it leaves the gate pending until the queue times out
# and ejects the PR. HA stays off until stable.
run_core_e2e=true
run_gpu_e2e=true
run_kubernetes_ha_e2e=false
run_kubernetes_credential_drivers_e2e=false
;;
*)
run_core_e2e=true
run_gpu_e2e=true
Expand All @@ -82,7 +71,7 @@ jobs:

version:
needs: [pr_metadata]
if: needs.pr_metadata.outputs.should_run == 'true'
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_any_e2e == 'true'
permissions:
contents: read
runs-on: ubuntu-latest
Expand Down Expand Up @@ -228,7 +217,7 @@ jobs:
build-rpm:
name: Build RPM packages
needs: [pr_metadata, version, build-binaries]
if: needs.pr_metadata.outputs.should_run == 'true'
if: needs.pr_metadata.outputs.run_integration == 'true'
permissions:
actions: read
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codex-security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ concurrency:

env:
CODEX_SECURITY_MAX_CONCURRENT_THREADS: "8"
CODEX_SECURITY_REASONING_EFFORT: medium
CODEX_SECURITY_REASONING_EFFORT: high
NVIDIA_INFERENCE_BASE_URL: https://inference-api.nvidia.com/v1
NVIDIA_INFERENCE_MODEL: openai/openai/gpt-5.6-sol
NVIDIA_INFERENCE_MODEL: openai/openai/gpt-6.1-sol

jobs:
analyze:
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/required-ci-gates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,9 @@ jobs:
# evaluate_workflow's verify_mirror would pend these gates forever downstream,
# since nothing creates that mirror branch here. Mark them passing directly.
post_status "OpenShell / Branch Checks" success "Disabled in downstream fork (job requires runners unavailable downstream)" "$STATUS_TARGET_URL"
evaluate_workflow "OpenShell / E2E" "branch-e2e.yml" "Branch E2E Checks" "test:e2e" "Core E2E result"
evaluate_workflow "OpenShell / GPU E2E" "branch-e2e.yml" "Branch E2E Checks" "test:e2e-gpu" "GPU E2E result"
# E2E is opt-in on PRs and does not run for merge groups.
if [ "$CONTEXT_KIND" != "merge_group" ]; then
evaluate_workflow "OpenShell / E2E" "branch-e2e.yml" "Branch E2E Checks" "test:e2e" "Core E2E result"
evaluate_workflow "OpenShell / GPU E2E" "branch-e2e.yml" "Branch E2E Checks" "test:e2e-gpu" "GPU E2E result"
fi
post_status "OpenShell / Helm Lint" success "Disabled in downstream fork (job requires runners unavailable downstream)" "$STATUS_TARGET_URL"
66 changes: 66 additions & 0 deletions .tekton/odh-openshell-e2e-pull-request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
annotations:
build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/openshell?rev={{revision}}
build.appstudio.redhat.com/commit_sha: '{{revision}}'
build.appstudio.redhat.com/target_branch: '{{target_branch}}'
pipelinesascode.tekton.dev/cancel-in-progress: "false"
pipelinesascode.tekton.dev/max-keep-runs: "3"
pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch
== "main"
creationTimestamp: null
labels:
appstudio.openshift.io/application: opendatahub-builds
appstudio.openshift.io/component: odh-openshell-e2e-ci
pipelines.appstudio.openshift.io/type: build
name: odh-openshell-e2e-on-pull-request
namespace: open-data-hub-tenant
spec:
params:
- name: git-url
value: '{{source_url}}'
- name: revision
value: '{{revision}}'
- name: output-image
value: quay.io/opendatahub/odh-openshell-e2e:odh-pr
- name: dockerfile
value: deploy/docker/Dockerfile.konflux.e2e-odh
- name: path-context
value: .
- name: hermetic
value: "true"
- name: build-platforms
value:
- linux-m2xlarge/amd64
- linux-m2xlarge/arm64
- name: prefetch-input
value: |
[
{"type": "cargo", "path": "."},
{"type": "cargo", "path": "e2e/rust"},
{"type": "rpm", "path": "deploy/konflux/e2e-odh"},
{"type": "generic", "path": "deploy/konflux/e2e-odh", "lockfile": "generic-fetcher.yaml"}
]
#add these additional params
- name: additional-tags
value:
- 'odh-pr-{{revision}}'
- name: pipeline-type
value: pull-request
pipelineRef:
resolver: git
params:
- name: url
value: https://github.com/opendatahub-io/odh-konflux-central.git
- name: revision
value: main
- name: pathInRepo
value: pipeline/multi-arch-container-build.yaml
taskRunTemplate:
serviceAccountName: build-pipeline-odh-openshell-e2e-ci
workspaces:
- name: git-auth
secret:
secretName: '{{ git_auth_secret }}'
status: {}
61 changes: 61 additions & 0 deletions .tekton/odh-openshell-e2e-push.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
apiVersion: tekton.dev/v1
kind: PipelineRun
#
metadata:
annotations:
build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/openshell?rev={{revision}}
build.appstudio.redhat.com/commit_sha: '{{revision}}'
build.appstudio.redhat.com/target_branch: '{{target_branch}}'
pipelinesascode.tekton.dev/cancel-in-progress: "false"
pipelinesascode.tekton.dev/max-keep-runs: "3"
pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch
== "main"
creationTimestamp: null
labels:
appstudio.openshift.io/application: opendatahub-builds
appstudio.openshift.io/component: odh-openshell-e2e-ci
pipelines.appstudio.openshift.io/type: build
name: odh-openshell-e2e-on-push
namespace: open-data-hub-tenant
spec:
params:
- name: git-url
value: '{{source_url}}'
- name: revision
value: '{{revision}}'
- name: output-image
value: quay.io/opendatahub/odh-openshell-e2e:odh-stable
- name: dockerfile
value: deploy/docker/Dockerfile.konflux.e2e-odh
- name: path-context
value: .
- name: hermetic
value: "true"
- name: build-platforms
value:
- linux-m2xlarge/amd64
- linux-m2xlarge/arm64
- name: prefetch-input
value: |
[
{"type": "cargo", "path": "."},
{"type": "cargo", "path": "e2e/rust"},
{"type": "rpm", "path": "deploy/konflux/e2e-odh"},
{"type": "generic", "path": "deploy/konflux/e2e-odh", "lockfile": "generic-fetcher.yaml"}
]
pipelineRef:
resolver: git
params:
- name: url
value: https://github.com/opendatahub-io/odh-konflux-central.git
- name: revision
value: main
- name: pathInRepo
value: pipeline/multi-arch-container-build.yaml
taskRunTemplate:
serviceAccountName: build-pipeline-odh-openshell-e2e-ci
workspaces:
- name: git-auth
secret:
secretName: '{{ git_auth_secret }}'
status: {}
64 changes: 64 additions & 0 deletions .tekton/odh-openshell-sandbox-openclaw-pull-request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
annotations:
build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/openshell?rev={{revision}}
build.appstudio.redhat.com/commit_sha: '{{revision}}'
build.appstudio.redhat.com/target_branch: '{{target_branch}}'
pipelinesascode.tekton.dev/cancel-in-progress: "false"
pipelinesascode.tekton.dev/max-keep-runs: "3"
pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch
== "main"
creationTimestamp: null
labels:
appstudio.openshift.io/application: opendatahub-builds
appstudio.openshift.io/component: odh-openshell-sandbox-openclaw-ci
pipelines.appstudio.openshift.io/type: build
name: odh-openshell-sandbox-openclaw-on-pull-request
namespace: open-data-hub-tenant
spec:
params:
- name: git-url
value: '{{source_url}}'
- name: revision
value: '{{revision}}'
- name: output-image
value: quay.io/opendatahub/odh-openshell-sandbox-openclaw:odh-pr
- name: dockerfile
value: deploy/docker/Dockerfile.konflux.openclaw
- name: path-context
value: .
- name: hermetic
value: "true"
- name: build-platforms
value:
- linux/x86_64
- linux/arm64
- name: prefetch-input
value: |
[
{"type": "npm", "path": "deploy/konflux/openclaw"},
{"type": "rpm", "path": "deploy/konflux/openclaw"}
]
#add these additional params
- name: additional-tags
value:
- 'odh-pr-{{revision}}'
- name: pipeline-type
value: pull-request
pipelineRef:
resolver: git
params:
- name: url
value: https://github.com/opendatahub-io/odh-konflux-central.git
- name: revision
value: main
- name: pathInRepo
value: pipeline/multi-arch-container-build.yaml
taskRunTemplate:
serviceAccountName: build-pipeline-odh-openshell-sandbox-openclaw-ci
workspaces:
- name: git-auth
secret:
secretName: '{{ git_auth_secret }}'
status: {}
59 changes: 59 additions & 0 deletions .tekton/odh-openshell-sandbox-openclaw-push.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
apiVersion: tekton.dev/v1
kind: PipelineRun
#
metadata:
annotations:
build.appstudio.openshift.io/repo: https://github.com/opendatahub-io/openshell?rev={{revision}}
build.appstudio.redhat.com/commit_sha: '{{revision}}'
build.appstudio.redhat.com/target_branch: '{{target_branch}}'
pipelinesascode.tekton.dev/cancel-in-progress: "false"
pipelinesascode.tekton.dev/max-keep-runs: "3"
pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch
== "main"
creationTimestamp: null
labels:
appstudio.openshift.io/application: opendatahub-builds
appstudio.openshift.io/component: odh-openshell-sandbox-openclaw-ci
pipelines.appstudio.openshift.io/type: build
name: odh-openshell-sandbox-openclaw-on-push
namespace: open-data-hub-tenant
spec:
params:
- name: git-url
value: '{{source_url}}'
- name: revision
value: '{{revision}}'
- name: output-image
value: quay.io/opendatahub/odh-openshell-sandbox-openclaw:odh-stable
- name: dockerfile
value: deploy/docker/Dockerfile.konflux.openclaw
- name: path-context
value: .
- name: hermetic
value: "true"
- name: build-platforms
value:
- linux/x86_64
- linux/arm64
- name: prefetch-input
value: |
[
{"type": "npm", "path": "deploy/konflux/openclaw"},
{"type": "rpm", "path": "deploy/konflux/openclaw"}
]
pipelineRef:
resolver: git
params:
- name: url
value: https://github.com/opendatahub-io/odh-konflux-central.git
- name: revision
value: main
- name: pathInRepo
value: pipeline/multi-arch-container-build.yaml
taskRunTemplate:
serviceAccountName: build-pipeline-odh-openshell-sandbox-openclaw-ci
workspaces:
- name: git-auth
secret:
secretName: '{{ git_auth_secret }}'
status: {}
17 changes: 9 additions & 8 deletions CI.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ Windows checks are not required for merging and do not run in merge queues.
Main and manual runs also build release binaries, with `continue-on-error: true`
so Windows failures do not fail the workflow.

Every approved `Branch E2E Checks` run builds the RPM packages, including
runs without optional E2E labels. Core integration qualification builds and installs
`Branch E2E Checks` builds binaries and images only when an E2E suite is
selected. DEB and RPM packages build only when integration qualification is selected. Core integration qualification builds and installs
the DEB on Ubuntu with Docker and installs the CLI and gateway RPMs on Fedora with
rootful and rootless Podman. These lanes run conformance using the matching runtime
images. Release Dev and Release Tag use the same package installers.
Expand Down Expand Up @@ -433,8 +433,6 @@ Important: if a PR requires manual admission, every new commit needs another `/o
GitHub merge queue is required for `main`. Repository administrators must enable **Require merge queue** in the branch ruleset for `main` and keep these required status contexts aligned with the PR gates:

- `OpenShell / Branch Checks`
- `OpenShell / E2E`
- `OpenShell / GPU E2E`
- `OpenShell / Helm Lint`
- `OpenShell / Trivy Changes`

Expand All @@ -445,7 +443,7 @@ its own stable result status.
Merge-group runs use the `merge_group` event. The event is distinct from `pull_request` and `push`, and GitHub will not report required checks for queued PRs unless the workflows include it. In this repository:

- `Branch Checks` runs the standard non-E2E gates on the merge-group SHA.
- `Branch E2E Checks` runs core E2E and GPU E2E for merge groups. Kubernetes HA E2E remains optional and label-driven on PRs.
- `Branch E2E Checks` does not run for merge groups. E2E suites remain opt-in on PRs.
- `Helm Lint` runs for merge groups without the PR diff optimization, because the merge-group branch is the final integration state.
- `Trivy Changes` compares the merge-group configuration with its base and rejects new High or Critical findings.
- `Required CI Gates` posts the same `OpenShell / ...` statuses to the merge-group SHA and does not require a `pull-request/<N>` mirror for merge-group events.
Expand All @@ -471,7 +469,7 @@ The bot's full administrator documentation is internal to NVIDIA. The only comma
| File | Role |
|---|---|
| `.github/workflows/branch-checks.yml` | Required non-E2E checks. Triggers on `push: pull-request/[0-9]+` for PR mirrors and `merge_group` for queued merges. |
| `.github/workflows/branch-e2e.yml` | Standard, GPU, Kubernetes HA, and Kubernetes credential-driver E2E. PR mirror pushes use `test:e2e`, `test:e2e-gpu`, and `test:e2e-kubernetes` labels; merge groups run core and GPU E2E. |
| `.github/workflows/branch-e2e.yml` | Standard, GPU, Kubernetes HA, and Kubernetes credential-driver E2E. PR mirror pushes use `test:e2e`, `test:e2e-gpu`, and `test:e2e-kubernetes` labels; merge groups do not run E2E. |
| `.github/workflows/build-binaries.yml`, `build-vm-driver.yml` | Shared binary matrices used by branch and release workflows. The VM driver remains separate because its build consumes the runtime binaries. |
| `.github/workflows/build-images.yml` | Builds and pushes multi-platform images, then uploads the same OCI images as workflow artifacts. |
| `.github/workflows/package-release-binaries.yml` | Packages raw build artifacts into release tarballs without rebuilding them. |
Expand Down Expand Up @@ -507,11 +505,14 @@ These workflows run after merge to publish dev/tagged artifacts and verify them.
Require these statuses in the branch ruleset for PR and merge-queue CI:

- `OpenShell / Branch Checks`
- `OpenShell / E2E`
- `OpenShell / GPU E2E`
- `OpenShell / Helm Lint`
- `OpenShell / Trivy Changes`

The following statuses are opt-in and controlled by labels:

- `OpenShell / E2E`: `test:e2e`
- `OpenShell / GPU E2E`: `test:e2e-gpu`

For mirror-based workflows, require the statuses published by
`Required CI Gates`, not their underlying jobs. `OpenShell / Trivy Changes` is
the stable result job of the direct pull-request workflow. Together these
Expand Down
Loading
Loading