Skip to content

ci: auto-trigger aks-ai-runtime chart-integration-test on Ray PRs - #139

Draft
Alyssa Vu (alyssa1303) wants to merge 8 commits into
mainfrom
ci/trigger-chart-integration-test
Draft

Alyssa Vu (alyssa1303) wants to merge 8 commits into
mainfrom
ci/trigger-chart-integration-test

Conversation

@alyssa1303

@alyssa1303 Alyssa Vu (alyssa1303) commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

What

Adds a GitHub Actions workflow that auto-triggers aks-ai-runtime's chart-integration-test ADO pipeline (id 470554) whenever a PR here touches images/ray/**, via that pipeline's new TauGridRayImagePR incoming webhook resource. Passes the PR branch as sourceRef and comments on the PR once triggered.

Why

images/ray's build recipe lives in this repo, but the integration suite that validates it (real AKS cluster, chart installs, e2e tests) runs in aks-ai-runtime's ADO pipelines. Azure DevOps repository-resource triggers only work for Azure Repos Git, not GitHub — so nothing in ADO can react automatically to a push here. Before this, validating a Ray image change required someone to remember to manually run chart-integration-test.yml with a sourceRef override.

This repo's org blocks Azure DevOps PAT creation, so the original design (calling ADO's authenticated "Run pipeline" REST API with a PAT) isn't usable here. Instead this calls aks-ai-runtime's TauGridRayImagePR incoming webhook — a public ADO endpoint authenticated with an HMAC-SHA1 signature over the request body, not a PAT. See azure-management-and-platforms/aks-ai-runtime#1452 for the webhook resource + sourceRef coalescing this depends on.

Setup required before this is active

  1. In the ADO CloudNativeCompute project (Project Settings → Service connections → New service connection → Incoming WebHook), a project admin creates a service connection:
    • Webhook name: TauGridRayImagePR (must match exactly — it's the name in the pipeline's resources.webhooks block)
    • Secret: any strong random string
    • HTTP header: X-Hub-Signature
    • Authorize the chart-integration-test pipeline to use it (or check "Grant access permission to all pipelines")
  2. Add that same secret as a repo secret here named ADO_WEBHOOK_SECRET (Settings → Secrets and variables → Actions).
  3. Manually run chart-integration-test.yml once in ADO after the webhook resource is merged — new resource triggers need one normal run before ADO will accept webhook calls for them.

Until the secret exists, the workflow fails fast with a clear error instead of silently no-oping.

Scope

This is intentionally "fire and forget" — it triggers the run and links to the pipeline's run list (the incoming-webhook response doesn't reliably expose a specific run ID), but doesn't report the result back as a status check yet. A reviewer still checks the ADO run before approving. A follow-up could add a callback so this becomes a required status check.

Alyssa Vu (alyssa1303) and others added 3 commits August 18, 2026 16:46
images/ray's build recipe lives here, but the integration suite that
validates it (AKS cluster, chart installs, e2e) runs in aks-ai-runtime's
ADO pipelines. ADO repository-resource triggers only work for Azure
Repos Git, not GitHub, so nothing there can react to a push here
automatically.

Add a workflow that queues aks-ai-runtime's chart-integration-test
pipeline (id 470554) directly via the ADO REST API whenever a PR
touches images/ray/**, passing the PR branch as the sourceRef template
parameter, and comments on the PR with a link to the queued run.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the PAT-gated "Run pipeline" REST API call with aks-ai-runtime's
new TauGridRayImagePR incoming webhook resource. The org blocks Azure
DevOps PAT creation, so ADO_PAT was never going to be usable here.

The incoming webhook is authenticated with an HMAC-SHA1 signature over
the request body (X-Hub-Signature header), keyed by a shared secret set
on the Incoming WebHook service connection in the CloudNativeCompute
ADO project -- not a PAT. Requires a repo secret ADO_WEBHOOK_SECRET
matching that connection's secret.

The webhook response doesn't reliably expose the queued run's ID, so
the PR comment links to the pipeline's run list instead of one run.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Verifies the trigger-chart-integration-test.yml workflow fires end-to-end
via GitHub Actions (path filter + webhook POST + PR comment) before merge.
Safe to squash/drop at merge time.
@github-actions

Copy link
Copy Markdown

🔄 Triggered chart-integration-test in aks-ai-runtime against this branch (ci/trigger-chart-integration-test) to validate this Ray image change before merge. Look for the newest run against refs/heads/ci/trigger-chart-integration-test.

The signature header was built as GitHub-style "sha1=<lowercase hex>",
based on two third-party blog posts. Microsoft's own docs for
resources.webhooks.webhook give a concrete worked example showing the
expected value is the bare uppercase hex digest with no prefix at all:
750D33212D3AD4932CC390819050734831A0A94F for a documented sample
payload/secret pair. Reproduced that exact example locally to confirm.

This explains the live test symptom: ADO returned 200 OK for our POST
(likely returns 200 unconditionally to avoid leaking secret-guessing
signal) but never actually queued a run, because the checksum never
matched.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

🔄 Triggered chart-integration-test in aks-ai-runtime against this branch (ci/trigger-chart-integration-test) to validate this Ray image change before merge. Look for the newest run against refs/heads/ci/trigger-chart-integration-test.

@github-actions

Copy link
Copy Markdown

🔄 Triggered chart-integration-test in aks-ai-runtime against this branch (ci/trigger-chart-integration-test) to validate this Ray image change before merge. Look for the newest run against refs/heads/ci/trigger-chart-integration-test.

@github-actions

Copy link
Copy Markdown

🔄 Triggered chart-integration-test in aks-ai-runtime against this branch (ci/trigger-chart-integration-test) to validate this Ray image change before merge. Look for the newest run against refs/heads/ci/trigger-chart-integration-test.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

🔄 Triggered chart-integration-test in aks-ai-runtime against this branch (ci/trigger-chart-integration-test) to validate this Ray image change before merge. Look for the newest run against refs/heads/ci/trigger-chart-integration-test.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

🔄 Triggered chart-integration-test in aks-ai-runtime against this branch (ci/trigger-chart-integration-test) to validate this Ray image change before merge. Look for the newest run against refs/heads/ci/trigger-chart-integration-test.

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