You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 775c453
Browse filesBrowse the repository at this point in the historyBrowse files
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+
# SPDX-License-Identifier: Apache-2.0
3
+
4
+
name: Check Protobuf Compatibility
5
+
description: Check protobuf compatibility against the target or latest stable release using the release train policy. Requires a checkout with full history and tags.
6
+
7
+
inputs:
8
+
ref:
9
+
description: PR or merge-group target branch/commit, or release tag to qualify.
10
+
required: true
11
+
12
+
runs:
13
+
using: composite
14
+
steps:
15
+
- uses: ./.github/actions/setup-nix
16
+
17
+
- name: Check protobuf compatibility
18
+
shell: bash
19
+
env:
20
+
CHECK_REF: ${{ inputs.ref }}
21
+
run: |
22
+
nix run .#check-protobuf-compatibility --no-write-lock-file -- "$CHECK_REF"
Copy file name to clipboardExpand all lines: CI.md
+51-2Lines changed: 51 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,6 +17,55 @@ Manual admission does not change the bot's automatic trust policy for ready PRs.
17
17
18
18
Merge queue validation is a second integration gate for `main`. After a PR has passed the required PR-head statuses, a maintainer adds it to the merge queue. GitHub creates a temporary merge-group branch that combines the latest `main`, the queued PR, and any earlier queued PRs. The same required `OpenShell / ...` status contexts are then published against the merge-group SHA before GitHub merges it.
19
19
20
+
### Protobuf API compatibility
21
+
22
+
`Protobuf Compatibility` runs in Branch Checks and Release Tag through the shared
23
+
`check-protobuf-compatibility` action and Nix app. The app supplies Python, Buf,
24
+
and Git from the flake lockfile.
25
+
It uses Buf's `FILE` policy for the `proto/`
26
+
module, covering SDK descriptors and extension contracts. Storage-only protobufs
27
+
remain subject to their separate durability checks.
28
+
29
+
Branch Checks compares the prospective merge tree with the PR target commit,
30
+
so additions on the target do not look like deletions in an outdated PR. Merge
31
+
queues use their base commit. Both paths resolve the train from tags reachable
32
+
from that target, preventing a PR from selecting its own train. The checkout
33
+
must contain full history and tags; the checker leaves HEAD and working files
34
+
unchanged.
35
+
36
+
The current train's version is compared with the latest stable release. During
37
+
`0.x`, a minor increment permits breaking changes: for example, `0.2.0-pre.N`
38
+
after stable `0.1.2`. A patch increment such as `0.1.3-pre.N` rejects them.
39
+
Commit messages do not affect this decision. No active train also rejects
40
+
breaking changes. Allowed findings remain visible as warnings; schema errors,
41
+
missing baselines, merge conflicts, and tool failures always fail the check.
42
+
43
+
Release Tag compares the tagged candidate cumulatively against the previous
44
+
stable release, using the same minor-versus-patch policy. Its result is part
45
+
of the qualification profile: failure blocks stable publication, while a
46
+
pre-release can still publish with failed qualification recorded. This checks
47
+
protobuf compatibility; SDK/configuration compatibility and migration review
48
+
remain separate qualification work.
49
+
50
+
Fetch the target and tags to check committed branch changes locally, replacing
51
+
`origin/main` for another target:
52
+
53
+
```shell
54
+
git fetch origin main --tags
55
+
nix run .#check-protobuf-compatibility -- origin/main
56
+
```
57
+
58
+
The same command accepts a release tag to qualify it against the previous stable
59
+
release. Branch names and commit SHAs select the branch comparison instead:
60
+
61
+
```shell
62
+
nix run .#check-protobuf-compatibility -- refs/tags/v0.2.0-pre.1
63
+
```
64
+
65
+
For an intentional minor-train incompatibility, record the Buf finding,
66
+
linked issue, consumer impact, and migration plan in the PR. Keep the finding
67
+
visible; do not disable the job or add a broad Buf ignore rule.
68
+
20
69
Windows PR checks are opt-in: add `test:windows`, then select **Re-run all jobs**
21
70
on the current Windows MSVC run. Subsequent mirrored commits run them automatically.
22
71
Windows checks are not required for merging and do not run in merge queues.
@@ -182,7 +231,7 @@ jobs:
182
231
```
183
232
184
233
Set `needs: security` on a downstream promotion job to require successful scans.
185
-
The tagged release workflow records security and integration outcomes in a
234
+
The tagged release workflow records protobuf, security, and integration outcomes in a
186
235
qualification job after publishing its commit-addressed OCI images. A failed
187
236
check remains visible in the workflow, but pre-release artifact assembly and
188
237
publication continue. Stable publication currently requires the implemented
@@ -441,7 +490,7 @@ These workflows run after merge to publish dev/tagged artifacts and verify them.
441
490
| File | Role |
442
491
|---|---|
443
492
| `.github/workflows/release-dev.yml` | Publishes the rolling `dev` build on every push to `main`. Builds gateway, sandbox, and supervisor images and binaries, packages, wheels, and pushes the Helm chart as `oci://ghcr.io/nvidia/openshell/helm-chart:0.0.0-dev` (plus an immutable `0.0.0-dev.<sha>` pin). Also dispatchable manually. |
444
-
| `.github/workflows/release-tag.yml` | Publishes tagged stable releases and manually dispatched pre-releases. Its automatic tag trigger excludes `-pre.*`. Security and integration failures do not block pre-release artifact publication. Stable publication requires the currently implemented qualification profile to pass; the summary identifies the remaining RFC 0014 coverage. |
493
+
| `.github/workflows/release-tag.yml` | Publishes tagged stable releases and manually dispatched pre-releases. Its automatic tag trigger excludes `-pre.*`. Protobuf, security, and integration failures do not block pre-release artifact publication. Stable publication requires the currently implemented qualification profile to pass; the summary identifies the remaining RFC 0014 coverage. |
445
494
| `.github/workflows/release-canary.yml` | Smoke-tests published dev artifacts in the `macos`, `ubuntu-deb`, `ubuntu-snap-system-docker`, `fedora`, and `kubernetes` (kind + Helm) jobs. Each job reaches its gateway and creates, exercises, and deletes a sandbox. The Snap lanes verify a compatible system Docker lifecycle and `ubuntu-snap-docker-preflight` tests fail-fast behavior when Docker is absent or supplied by the Docker snap. It runs automatically after `Release Dev` succeeds and supports manual dispatch (`gh workflow run release-canary.yml --ref <branch>`). See the `test-release-canary` skill for the playbook and local kind reproduction. |
0 commit comments