镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Helm - Gateway API support - #43774

Closed
BCTBB wants to merge 3 commits into
mainfrom
ingress-gateway-support
Closed

BCTBB wants to merge 3 commits into
mainfrom
ingress-gateway-support

Conversation

@BCTBB

@BCTBB BCTBB commented Apr 20, 2026 •

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features
    • Added optional Kubernetes Gateway API support as an alternative to Ingress.
    • Added configurable Gateway resources with listeners, addresses, and optional TLS termination.
    • Added HTTPRoute and GRPCRoute support with customizable hostnames, rules, timeouts, and backend services.
    • Added optional cross-namespace ReferenceGrant configuration.
    • Added safeguards to prevent enabling Gateway API and Ingress simultaneously.

@BCTBB
BCTBB marked this pull request as ready for review August 11, 2026 20:32
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

The Helm chart adds disabled-by-default Gateway API configuration. It can render a Gateway with configurable listeners and TLS settings. It adds conditional HTTPRoute and GRPCRoute resources with configurable routing and Fleet service backends. It also adds optional ReferenceGrant rendering for cross-namespace Service references. HTTPRoute rendering rejects simultaneous Gateway API and Ingress enablement.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning No pull request description was provided, so the required issue reference, checklist, testing details, and applicable sections are missing. Add a description that follows the repository template, including the related issue, completed checklist items, testing results, and any applicable exceptions.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: adding Helm support for the Kubernetes Gateway API.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ingress-gateway-support

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (1)
charts/fleet/templates/referencegrant.yaml (1)

22-24: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Scope the grant to an explicit Service.

When toServiceName is empty, Lines 22-24 omit to.name. Gateway API interprets that as permission to reference every Service in the ReferenceGrant namespace, not only the chart-managed Service from charts/fleet/templates/service.yaml:1-36. (raw.githubusercontent.com)

Require toServiceName for this feature, or add a separate explicit wildcard option. The Gateway API security guidance recommends specifying the target name to avoid a blanket grant. (gateway-api.sigs.k8s.io)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/fleet/templates/referencegrant.yaml` around lines 22 - 24, Require an
explicit target Service name in the ReferenceGrant template by validating
gatewayApi.referenceGrant.toServiceName and failing when it is empty, rather
than omitting to.name. Preserve the existing name rendering for configured
values and keep the grant scoped to the chart-managed Service.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@charts/fleet/templates/gateway.yaml`:
- Line 17: Update the gatewayClassName value in the Gateway template to apply
Helm’s required guard when chart-managed Gateway deployment is enabled, and
quote the resulting value. Preserve the existing gatewayApi.gateway.className
configuration source while rejecting an empty value before rendering.

In `@charts/fleet/templates/httproute.yaml`:
- Around line 22-42: The HTTPRoute and GRPCRoute templates must not render
unattached routes when gatewayApi.gateway.enabled is false and
gatewayApi.httpRoute.parentRefs is empty. Update
charts/fleet/templates/httproute.yaml lines 22-42 and
charts/fleet/templates/grpcroute.yaml lines 19-39 to either fail rendering or
suppress the route unless at least one parent reference is configured; preserve
the existing generated-gateway parentRefs behavior.

In `@charts/fleet/templates/referencegrant.yaml`:
- Around line 17-18: Update the ReferenceGrant template to validate that
.Values.gatewayApi.referenceGrant.from is non-empty before rendering the
resource. When the feature is enabled and the list is empty, fail Helm rendering
with a clear validation error; preserve the existing toYaml rendering for valid
entries.

---

Nitpick comments:
In `@charts/fleet/templates/referencegrant.yaml`:
- Around line 22-24: Require an explicit target Service name in the
ReferenceGrant template by validating gatewayApi.referenceGrant.toServiceName
and failing when it is empty, rather than omitting to.name. Preserve the
existing name rendering for configured values and keep the grant scoped to the
chart-managed Service.
🪄 Autofix

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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: a8325ebc-e696-407b-b841-dafc2b9a537d

📥 Commits

Reviewing files that changed from the base of the PR and between 81ea743 and 1f977a7.

📒 Files selected for processing (5)
  • charts/fleet/templates/gateway.yaml
  • charts/fleet/templates/grpcroute.yaml
  • charts/fleet/templates/httproute.yaml
  • charts/fleet/templates/referencegrant.yaml
  • charts/fleet/values.yaml

{{- toYaml . | nindent 4 }}
{{- end }}
spec:
gatewayClassName: {{ .Values.gatewayApi.gateway.className }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu
printf '%s\n' '--- gateway template ---'
cat -n charts/fleet/templates/gateway.yaml
printf '%s\n' '--- relevant values ---'
cat -n charts/fleet/values.yaml | sed -n '55,90p'
printf '%s\n' '--- related references ---'
rg -n -C 3 'gatewayApi|className|GatewayClass' charts/fleet

Repository: fleetdm/fleet

Length of output: 17636


🌐 Web query:

Gateway API v1 GatewaySpec gatewayClassName required non-empty GatewayClassName schema

💡 Result:

In the Kubernetes Gateway API v1, the gatewayClassName field within the GatewaySpec is a required field [1][2]. According to the official CRD schema and API definitions, the gatewayClassName field is defined as an ObjectName type [1][2]. It is explicitly marked as required within the GatewaySpec object, and the schema enforces a length constraint of 1 to 253 characters (minLength: 1, maxLength: 253) [2]. Consequently, an empty value is not permitted, and the field must be provided for a Gateway resource to be considered valid [2]. This field serves to associate the Gateway with a specific GatewayClass resource, which defines the implementation and configuration behavior for the gateway [3][4].

Citations:


🏁 Script executed:

#!/bin/bash
set -eu
printf '%s\n' '--- chart validation and tests ---'
git ls-files charts/fleet | rg '(^|/)(values.schema.json|Chart.yaml|templates/.*|tests?/)' || true
rg -n -C 3 'gatewayApi|gatewayClassName|required|helm template|helm lint' charts/fleet .github 2>/dev/null || true
printf '%s\n' '--- available Helm tooling ---'
command -v helm || true

Repository: fleetdm/fleet

Length of output: 50371


🏁 Script executed:

#!/bin/bash
set -eu
python3 - <<'PY'
from pathlib import Path

template = Path("charts/fleet/templates/gateway.yaml").read_text()
values = Path("charts/fleet/values.yaml").read_text()

assert "and .Values.gatewayApi.enabled .Values.gatewayApi.gateway.enabled" in template
assert 'className: ""' in values
assert "gatewayClassName: {{ .Values.gatewayApi.gateway.className }}" in template

print("Gateway renders only when gatewayApi.enabled and gatewayApi.gateway.enabled are true.")
print("The default gatewayApi.gateway.className is empty.")
print("The rendered gatewayClassName is therefore empty when both flags are enabled without an override.")
PY

Repository: fleetdm/fleet

Length of output: 386


Require gatewayApi.gateway.className when the chart-managed Gateway is enabled.

The default empty value renders an invalid gatewayClassName, which the Gateway API rejects. Add a Helm required guard and quote the value.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/fleet/templates/gateway.yaml` at line 17, Update the gatewayClassName
value in the Gateway template to apply Helm’s required guard when chart-managed
Gateway deployment is enabled, and quote the resulting value. Preserve the
existing gatewayApi.gateway.className configuration source while rejecting an
empty value before rendering.

Comment on lines +22 to +42
parentRefs:
{{- if .Values.gatewayApi.gateway.enabled }}
- name: {{ include "fleet.fullname" . }}-gateway
namespace: {{ .Release.Namespace }}
{{- with .Values.gatewayApi.httpRoute.sectionName }}
sectionName: {{ . }}
{{- end }}
{{- else }}
{{- range .Values.gatewayApi.httpRoute.parentRefs }}
- name: {{ .name }}
{{- with .namespace }}
namespace: {{ . }}
{{- end }}
{{- with .sectionName }}
sectionName: {{ . }}
{{- end }}
{{- with .port }}
port: {{ . }}
{{- end }}
{{- end }}
{{- end }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- candidate files ---'
git ls-files 'charts/fleet/*' | grep -E '(^|/)(values(\.schema)?\.yaml|httproute\.yaml|grpcroute\.yaml|.*test.*|Chart\.yaml)$' || true

printf '%s\n' '--- route and gateway references ---'
rg -n -C 3 'parentRefs|gatewayApi|HTTPRoute|GRPCRoute' charts/fleet --glob '!templates/*.yaml' --glob 'values*.yaml' --glob '*.json' --glob '*test*' || true

printf '%s\n' '--- HTTPRoute template ---'
cat -n charts/fleet/templates/httproute.yaml

printf '%s\n' '--- GRPCRoute template ---'
cat -n charts/fleet/templates/grpcroute.yaml

Repository: fleetdm/fleet

Length of output: 7696


🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- gatewayApi values ---'
sed -n '60,165p' charts/fleet/values.yaml

printf '%s\n' '--- gateway-related templates ---'
rg -n -C 5 'gatewayApi|kind: Gateway|httpRoute|grpcRoute|fail ' charts/fleet/templates

printf '%s\n' '--- repository references and tests ---'
rg -n -C 4 'parentRefs|gatewayApi\.gateway|HTTPRoute|GRPCRoute|gateway API|Gateway API' . \
  --glob '!vendor/**' --glob '!node_modules/**' --glob '!dist/**' --glob '!build/**' \
  --glob '*.yaml' --glob '*.yml' --glob '*.md' --glob '*.tpl' --glob '*.go' --glob '*.ts' --glob '*.js' \
  | head -n 500

printf '%s\n' '--- chart file list ---'
git ls-files charts/fleet | sed -n '1,240p'

Repository: fleetdm/fleet

Length of output: 28908


🌐 Web query:

Gateway API HTTPRoute GRPCRoute spec parentRefs required minItems empty list schema

💡 Result:

In the Kubernetes Gateway API, the parentRefs field in HTTPRoute and GRPCRoute is a required field, and its list must contain at least one entry to be valid [1][2][3][4]. According to the API specifications and the underlying Go type definitions, parentRefs is defined as a slice of references to parent resources (typically Gateways) [1][4]. While the field itself is not marked as optional in the struct definitions, the Kubernetes API validation mechanisms enforce that a Route must be attached to at least one parent to function [1][2][3]. Specifically, if an empty list or a null value is provided for parentRefs, it fails to meet the structural requirement for the resource to be processed and attached to a Gateway or other supported parent resource [2][3]. If a parentRefs list is provided, it must conform to validation rules, such as having distinct entries and ensuring that any combination of optional fields (like sectionName or port) is consistent across references to the same parent [4][5][6]. Providing an empty parentRefs list is functionally invalid because the Gateway controller requires these references to determine which parent resource should accept the routing rules defined in the Route [2][3][7].

Citations:


🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- chart metadata ---'
cat -n charts/fleet/Chart.yaml

printf '%s\n' '--- HTTPRoute parentRefs schema from Gateway API main ---'
curl -fsSL https://github.com/raw/kubernetes-sigs/gateway-api/main/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml \
  | awk '/^              parentRefs:/{f=1} f{print} f && /^              [a-zA-Z].*:/{if ($0 !~ /parentRefs:/) exit}' \
  | head -n 100

printf '%s\n' '--- GRPCRoute parentRefs schema from Gateway API main ---'
curl -fsSL https://github.com/raw/kubernetes-sigs/gateway-api/main/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml \
  | awk '/^              parentRefs:/{f=1} f{print} f && /^              [a-zA-Z].*:/{if ($0 !~ /parentRefs:/) exit}' \
  | head -n 100

printf '%s\n' '--- parentRefs requirements in official API source ---'
for file in \
  https://github.com/raw/kubernetes-sigs/gateway-api/main/apis/v1/shared_types.go \
  https://github.com/raw/kubernetes-sigs/gateway-api/main/apis/v1/httproute_types.go \
  https://github.com/raw/kubernetes-sigs/gateway-api/main/apis/v1/grpcroute_types.go
do
  echo "--- $file"
  curl -fsSL "$file" | rg -n -A 12 -B 4 'ParentRefs|at least one parent|no parent'
done

Repository: fleetdm/fleet

Length of output: 20209


🏁 Script executed:

#!/bin/bash
set -eu

python3 - <<'PY'
from pathlib import Path
import re

cases = [
    ("HTTPRoute", Path("charts/fleet/templates/httproute.yaml"), "gatewayApi.httpRoute.parentRefs"),
    ("GRPCRoute", Path("charts/fleet/templates/grpcroute.yaml"), "gatewayApi.grpcRoute.parentRefs"),
]

for kind, path, refs_key in cases:
    text = path.read_text()
    route_guard = (
        ".Values.gatewayApi.enabled" in text
        and ("grpcRoute.enabled" in text if kind == "GRPCRoute" else True)
    )
    managed_branch = re.search(
        r"\{\{-?\s*if \.Values\.gatewayApi\.gateway\.enabled\s*\}\}(.*?)"
        r"\{\{-?\s*else\s*\}\}(.*?)\{\{-?\s*end\s*\}\}",
        text,
        re.S,
    )
    assert route_guard, f"{kind}: route guard not found"
    assert managed_branch, f"{kind}: parentRefs branch not found"
    managed, external = managed_branch.groups()
    assert "- name:" in managed, f"{kind}: managed Gateway branch has no parent"
    assert "range " in external and refs_key.rsplit(".", 1)[-1] in external, (
        f"{kind}: external parentRefs branch does not range configured parents"
    )
    print(f"{kind}: gatewayApi.enabled=true, gateway.enabled=false, {refs_key}=[] -> parentRefs has zero items")
PY

printf '%s\n' '--- official default-gateway semantics ---'
curl -fsSL https://github.com/raw/kubernetes-sigs/gateway-api/main/apis/v1/shared_types.go \
  | sed -n '255,275p'

printf '%s\n' '--- official CRD parentRefs constraints ---'
for resource in httproutes grpcroutes; do
  echo "--- $resource"
  curl -fsSL "https://github.com/raw/kubernetes-sigs/gateway-api/main/config/crd/standard/gateway.networking.k8s.io_${resource}.yaml" \
    | sed -n '/^[[:space:]]*parentRefs:/,/^[[:space:]]*[a-zA-Z][a-zA-Z0-9]*:/p' \
    | grep -E 'parentRefs:|minItems:|maxItems:|x-kubernetes-list' || true
done

Repository: fleetdm/fleet

Length of output: 3002


Require a parent reference for externally managed Gateways.

When gatewayApi.gateway.enabled is false and the corresponding parentRefs list is empty, both templates render an unattached route. Fail rendering or suppress the route unless at least one parent reference is configured.

📍 Affects 2 files
  • charts/fleet/templates/httproute.yaml#L22-L42 (this comment)
  • charts/fleet/templates/grpcroute.yaml#L19-L39
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/fleet/templates/httproute.yaml` around lines 22 - 42, The HTTPRoute
and GRPCRoute templates must not render unattached routes when
gatewayApi.gateway.enabled is false and gatewayApi.httpRoute.parentRefs is
empty. Update charts/fleet/templates/httproute.yaml lines 22-42 and
charts/fleet/templates/grpcroute.yaml lines 19-39 to either fail rendering or
suppress the route unless at least one parent reference is configured; preserve
the existing generated-gateway parentRefs behavior.

Comment on lines +17 to +18
from:
{{- toYaml .Values.gatewayApi.referenceGrant.from | nindent 4 }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rendered="$(mktemp)"
trap 'rm -f "$rendered"' EXIT

helm template test charts/fleet \
  --show-only templates/referencegrant.yaml \
  --set gatewayApi.enabled=true \
  --set gatewayApi.referenceGrant.enabled=true > "$rendered"

if awk '/^  from:/{getline; if ($0 ~ /^[[:space:]]+\[\]$/) found=1} END { exit(found ? 0 : 1) }' "$rendered"; then
  echo "FAIL: empty spec.from was rendered" >&2
  exit 1
fi

Repository: fleetdm/fleet

Length of output: 193


🏁 Script executed:

set -euo pipefail
printf '%s\n' '--- template ---'
cat -n charts/fleet/templates/referencegrant.yaml
printf '%s\n' '--- values ---'
sed -n '560,590p' charts/fleet/values.yaml
printf '%s\n' '--- related references ---'
rg -n -C 3 'referenceGrant|ReferenceGrant|gatewayApi' charts/fleet/templates charts/fleet/values.yaml charts/fleet/Chart.yaml charts/fleet/README.md 2>/dev/null | head -240

Repository: fleetdm/fleet

Length of output: 13940


🏁 Script executed:

set -euo pipefail
python3 - <<'PY'
from pathlib import Path
p = Path("charts/fleet/templates/referencegrant.yaml")
print("--- template ---")
for i, line in enumerate(p.read_text().splitlines(), 1):
    print(f"{i:4}: {line}")
p = Path("charts/fleet/values.yaml")
lines = p.read_text().splitlines()
print("--- values around referenceGrant ---")
for i in range(570, min(590, len(lines) + 1)):
    print(f"{i:4}: {lines[i-1]}")
PY
printf '%s\n' '--- related references ---'
rg -n -C 3 'referenceGrant|ReferenceGrant|gatewayApi' charts/fleet/templates charts/fleet/values.yaml charts/fleet/Chart.yaml 2>/dev/null | head -240

Repository: fleetdm/fleet

Length of output: 13937


🌐 Web query:

Gateway API v1.5.1 ReferenceGrant CRD schema spec.from minItems

💡 Result:

In the Gateway API v1.5.1 ReferenceGrant Custom Resource Definition (CRD) schema, both the from and to fields in the spec object have a minItems validation constraint set to 1 [1][2]. This requirement ensures that a valid ReferenceGrant must specify at least one entry in both the from list (which defines the trusted namespaces and kinds that can initiate references) and the to list (which defines the resources that may be referenced) [3][2]. These lists are defined with x-kubernetes-list-type: atomic [1][4], meaning the entire list is replaced if updated. Each ReferenceGrant operates additively, and because both fields are mandatory and require at least one item, they serve as the foundational configuration for establishing cross-namespace trust relationships in the Gateway API [3][2].

Citations:


🏁 Script executed:

set -euo pipefail
python3 - <<'PY'
from pathlib import Path
for name in ("charts/fleet/templates/referencegrant.yaml", "charts/fleet/values.yaml"):
    print(f"--- {name} ---")
    lines = Path(name).read_text().splitlines()
    if name.endswith("referencegrant.yaml"):
        lo, hi = 1, len(lines)
    else:
        hits = [i for i, line in enumerate(lines, 1) if "referenceGrant:" in line]
        lo, hi = max(1, hits[0] - 3), min(len(lines), hits[0] + 30) if hits else (1, 1)
    for i in range(lo, hi + 1):
        print(f"{i:4}: {lines[i-1]}")
PY
python3 - <<'PY'
import json, urllib.request
url = "https://github.com/raw/kubernetes-sigs/gateway-api/v1.5.1/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml"
try:
    data = urllib.request.urlopen(url, timeout=10).read().decode()
    print("--- ReferenceGrant schema excerpt ---")
    lines = data.splitlines()
    for i, line in enumerate(lines):
        if "from:" in line or "to:" in line or "minItems:" in line:
            print("\n".join(f"{j+1}: {lines[j]}" for j in range(max(0, i-3), min(len(lines), i+5))))
except Exception as exc:
    print(f"schema fetch failed: {exc}")
PY

Repository: fleetdm/fleet

Length of output: 2870


Fail when gatewayApi.referenceGrant.from is empty.

When enabled, the default from: [] renders an invalid ReferenceGrant. The Gateway API schema requires at least one spec.from entry. Add Helm validation before rendering the resource.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/fleet/templates/referencegrant.yaml` around lines 17 - 18, Update the
ReferenceGrant template to validate that .Values.gatewayApi.referenceGrant.from
is non-empty before rendering the resource. When the feature is enabled and the
list is empty, fail Helm rendering with a clear validation error; preserve the
existing toYaml rendering for valid entries.

@ireedy

ireedy commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Hey @rfairburn what do we need to get this PR merged?

jkatz01 added a commit that referenced this pull request Aug 31, 2026
- Adds related issue (if any), and if any of the manual QA checkboxes
were selected.
- Adds a -v verbose mode that also outputs who is assigned to the PR, a
full link, and tags from the related issue

Examples:
```
jonathan@jonathans-macbook-pro:~/repos/fleet-2$ ./tools/oncall/oncall.sh prs
51893  2026-08-25T17:29:40Z         tested  prateek-0490     Batch scheduled query name lookups when processing result logs
51881  2026-08-25T16:25:40Z                 nonpunctual      Include script for printer configuration from CSV
51845  2026-08-25T04:20:44Z  49502  tested  rajendrachavan   Write a query and its labels in a single transaction
51731  2026-08-21T19:49:52Z         tested  prateek-0490     Validate software list order keys against an allowlist
51583  2026-08-19T19:34:15Z         tested  prateek-0490     Require a team selection when validating report run targets
51338  2026-08-17T05:23:53Z  50846          Dhvanit41        Hide the toast details panel when the payload is empty
51265  2026-08-14T17:54:28Z         tested  prateek-0490     Expand host script variables via the environment
51241  2026-08-14T14:32:34Z  50336  tested  andymFleet       50336 apple business stale fleet names
51178  2026-08-13T20:18:48Z                 moojomoore       Add macOS unlock user account action
51119  2026-08-13T05:28:14Z  50882          Dhvanit41        Return an error when refetching an Android host
51020  2026-08-12T00:46:05Z  40092          sjawhar          Support credentialProviderPolicy in Android app configuration
50943  2026-08-11T12:31:48Z  46773  tested  surajtripathy07  Add software custom targets warning to delete label modal
50898  2026-08-10T19:26:08Z  45100          tianrking        Recover vulnerability counts after interrupted table swaps
50836  2026-08-08T19:23:13Z  50300  tested  kitarp29         Adding the logic to make controls even when it's empty
50822  2026-08-08T01:35:19Z         tested  viewer12         Add Nexus Shell as a macOS Fleet-maintained app
50774  2026-08-07T15:14:11Z  50357  tested  Dhvanit41        Clear stale failure detail when an Android profile becomes verified
49816  2026-07-23T13:19:19Z         tested  sleepy-slothh    Fix Ubuntu OSV binary package matching
43774  2026-04-20T15:46:23Z                 BCTBB            Helm - Gateway API support
```

```
jonathan@jonathans-macbook-pro:~/repos/fleet-2$ ./tools/oncall/oncall.sh prs -v
51893  2026-08-25T17:29:40Z         tested  prateek-0490                       #51893  Batch scheduled query name lookups when processing result logs
51881  2026-08-25T16:25:40Z                 nonpunctual                        #51881  Include script for printer configuration from CSV
51845  2026-08-25T04:20:44Z  49502  tested  rajendrachavan   lucasmrod         #51845  Write a query and its labels in a single transaction                 bug, ~backend, ~released bug, #g-orchestration
51731  2026-08-21T19:49:52Z         tested  prateek-0490     juan-fdz-hawa     #51731  Validate software list order keys against an allowlist
51583  2026-08-19T19:34:15Z         tested  prateek-0490     juan-fdz-hawa     #51583  Require a team selection when validating report run targets
51338  2026-08-17T05:23:53Z  50846          Dhvanit41                          #51338  Hide the toast details panel when the payload is empty               bug, ~frontend, ~released bug, #g-auto-patching
51265  2026-08-14T17:54:28Z         tested  prateek-0490     georgekarrv       #51265  Expand host script variables via the environment
51241  2026-08-14T14:32:34Z  50336  tested  andymFleet       JordanMontgomery  #51241  50336 apple business stale fleet names                               bug, ~released bug, #g-apple-at-work
51178  2026-08-13T20:18:48Z                 moojomoore                         #51178  Add macOS unlock user account action
51119  2026-08-13T05:28:14Z  50882          Dhvanit41                          #51119  Return an error when refetching an Android host                      bug, ~released bug, #g-byod
51020  2026-08-12T00:46:05Z  40092          sjawhar                            #51020  Support credentialProviderPolicy in Android app configuration        ~feature fest, customer-pingali, #g-byod
50943  2026-08-11T12:31:48Z  46773  tested  surajtripathy07  lucasmrod         #50943  Add software custom targets warning to delete label modal            bug, ~released bug, #g-orchestration, customer-susanoo
50898  2026-08-10T19:26:08Z  45100          tianrking        juan-fdz-hawa     #50898  Recover vulnerability counts after interrupted table swaps           bug, ~released bug, ~community, #g-supply-chain, ~aging bug
50836  2026-08-08T19:23:13Z  50300  tested  kitarp29         lucasmrod         #50836  Adding the logic to make controls even when it's empty               bug, ~gitops, #g-orchestration
50822  2026-08-08T01:35:19Z         tested  viewer12         AdamBaali         #50822  Add Nexus Shell as a macOS Fleet-maintained app
50774  2026-08-07T15:14:11Z  50357  tested  Dhvanit41                          #50774  Clear stale failure detail when an Android profile becomes verified  bug, ~released bug, #g-byod
49816  2026-07-23T13:19:19Z         tested  sleepy-slothh                      #49816  Fix Ubuntu OSV binary package matching
43774  2026-04-20T15:46:23Z                 BCTBB                              #43774  Helm - Gateway API support
```

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added an optional verbose mode for pull request listings, showing
assignees, URLs, linked issue labels, and manual QA status.
  * Improved output formatting with aligned columns.
* **Bug Fixes**
* Unknown command-line arguments are now rejected with clearer usage
guidance.
  * Improved detection of linked issues in pull request descriptions.
* **Documentation**
  * Updated command usage information to describe the verbose option.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@lucasmrod

Copy link
Copy Markdown
Member

Closing for now (PR metrics). @rfairburn please re-open a new one if this is necessary.

@lucasmrod lucasmrod closed this Sep 30, 2026

This branch had an error being deployed

1 failed deployment
Docker Hub — 1f977a7b Deployed Apr 20, 2026 by BCTBB via publish #85600
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.

3 participants