Skip to content

CI pipeline monitor label fixes#128501

Open
kg wants to merge 13 commits into
dotnet:mainfrom
kg:ci-pipeline-monitor-label-fixes
Open

CI pipeline monitor label fixes#128501
kg wants to merge 13 commits into
dotnet:mainfrom
kg:ci-pipeline-monitor-label-fixes

Conversation

@kg

@kg kg commented May 22, 2026

Copy link
Copy Markdown
Contributor
  • Ensure that when the CI pipeline monitor updater script generates a new issue, it applies blocking-clean-ci-optional
  • Ensure that during validation we check to make sure all assigned labels are real labels. In a previous run I had generating an issue fail because one of the labels was wrong.

cc @JulieLeeMSFT

Copilot AI review requested due to automatic review settings May 22, 2026 19:12
@github-actions github-actions Bot added the area-skills Agent Skills label May 22, 2026

Copilot AI 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.

Pull request overview

This PR updates the CI pipeline monitor GitHub-issue publishing flow to (1) always apply a default “blocking-clean-ci-optional” label when creating new issues, and (2) add a validation step that checks failure-suggested labels against the live set of labels in the dotnet/runtime repo.

Changes:

  • Add blocking-clean-ci-optional to gh issue create invocations for newly filed issues.
  • Add a validator step that fetches repo labels from the GitHub REST API and flags invalid failure labels before update_github.py runs.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
.github/skills/ci-pipeline-monitor/scripts/validate_results.py Adds a new “validate labels exist in dotnet/runtime” check by querying the GitHub labels API.
.github/skills/ci-pipeline-monitor/scripts/update_github.py Adds blocking-clean-ci-optional label when creating a new GitHub issue via gh.

Comment thread .github/skills/ci-pipeline-monitor/scripts/validate_results.py Outdated
Comment thread .github/skills/ci-pipeline-monitor/scripts/validate_results.py Outdated
Comment thread .github/skills/ci-pipeline-monitor/scripts/validate_results.py Outdated
Comment thread .github/skills/ci-pipeline-monitor/scripts/validate_results.py
@kg

kg commented May 22, 2026

Copy link
Copy Markdown
Contributor Author

One problem with doing this is that the github REST API has a limit of 60 queries per hour. So running this script more than a few times will hit the rate limit, as I just have and no longer can test it until later on today.

kg added 2 commits May 22, 2026 12:23
…nt to use for fixes

Address copilot feedback
…s will succeed even if we hit a rate limit, as long as one validation run has succeeded
Copilot AI review requested due to automatic review settings May 22, 2026 19:48

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

import urllib.request

LABELS_API_ENDPOINT = "https://api.github.com/repos/dotnet/runtime/labels"
LABELS_CACHE_FILE = os.path.join(__file__, "..", "cached_labels.json")
Comment thread .github/skills/ci-pipeline-monitor/scripts/validate_results.py Outdated
Comment thread .github/skills/ci-pipeline-monitor/scripts/validate_results.py Outdated
Comment thread .github/skills/ci-pipeline-monitor/scripts/validate_results.py
Comment on lines 87 to 90
gh_issue_command.append("create")
gh_issue_command.append("--label")
gh_issue_command.append("blocking-clean-ci-optional")
creating_new_issue = True
Copilot AI review requested due to automatic review settings May 22, 2026 20:02

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

import urllib.request

LABELS_API_ENDPOINT = "https://api.github.com/repos/dotnet/runtime/labels"
LABELS_CACHE_FILE = os.path.join(__file__, "..", "cached_labels.json")
Comment thread .github/skills/ci-pipeline-monitor/scripts/validate_results.py
Comment thread .github/skills/ci-pipeline-monitor/scripts/update_github.py Outdated
Comment thread .github/skills/ci-pipeline-monitor/.gitignore
Copilot AI review requested due to automatic review settings May 26, 2026 16:57

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

import urllib.request

LABELS_API_ENDPOINT = "https://api.github.com/repos/dotnet/runtime/labels"
LABELS_CACHE_FILE = os.path.join(__file__, "..", "cached_labels.json")
Comment thread .github/skills/ci-pipeline-monitor/scripts/update_github.py Outdated
This was referenced Jul 6, 2026
kotlarmilos added a commit that referenced this pull request Jul 10, 2026
… on Apple NativeAOT (refs #130253) (#130328)

Workflow artifact: ci-fix
Artifact kind: help
Linked KBE: #130253

> [!IMPORTANT]
> **Help-wanted / needs-review draft.** This is a best-effort candidate
fix that I could **not** build-validate in the agent environment (no
Apple NativeAOT cross-build is available here). It is a genuine,
**non-muting** change — it does not disable, skip, or `[ActiveIssue]`
the test. Please validate on the Apple NativeAOT library-test legs
before merging.

## Root cause

On the Apple **NativeAOT** library-test legs (`iossimulator` /
`maccatalyst` `AllSubsets_NativeAOT`, e.g. build
[1494308](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1494308)),
`System.Diagnostics.Tests.FileVersionInfoTest.FileVersionInfo_CustomManagedAssembly`
fails with:

```
System.IO.FileNotFoundException : .../System.Diagnostics.FileVersionInfo.Tests.app/System.Diagnostics.FileVersionInfo.TestAssembly.dll
```

The test opens its companion assembly **by file path** to read PE
version metadata — it never loads or executes it
(`FileVersionInfoTest.cs:25`):

```csharp
VerifyVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), TestAssemblyFileName), ...);
// TestAssemblyFileName = "System.Diagnostics.FileVersionInfo.TestAssembly.dll"
```

In the test `.csproj`, for Apple mobile the TestAssembly was included as
a **plain `<ProjectReference>`**. Under NativeAOT that assembly is
compiled into the native image, so **no loose `.dll` is deployed** next
to the app and `Directory.GetCurrentDirectory()/...TestAssembly.dll`
does not exist → `FileNotFoundException`. Under Apple **Mono** the
managed assembly is still deployed as a file, which is why the test
passes there.

The existing `[ActiveIssue(".../124344", IsAppleMobile && IsCoreCLR)]`
on this test does **not** apply here: `PlatformDetection.IsCoreCLR =>
IsNotMonoRuntime && IsNotNativeAot` is `false` under NativeAOT, so the
test genuinely runs (and fails) on the NativeAOT leg.

These NativeAOT library tests on Apple mobile were newly enabled by
#125437.

## Candidate change

Deploy the TestAssembly as a **Content** data file on the Apple
NativeAOT leg (exactly as already done for desktop), while keeping the
plain project reference for Apple **Mono**, where the
[#46856](#46856) vfs-mapping
workaround still applies:

- `TargetsAppleMobile && UseNativeAotRuntime` → Content copy (**new**).
- `TargetsAppleMobile && !UseNativeAotRuntime` (Mono) → plain reference
(unchanged).
- Browser and desktop → unchanged.

Only the Apple-NativeAOT branch changes; the MSBuild conditions leave
Mono Apple, browser, and desktop provably untouched, and never select
both `<ProjectReference>` items at once.

## What is unverified (why this is a draft)

- I could not run an Apple NativeAOT build here, so I have **not**
confirmed the Content `.dll` actually lands at
`Directory.GetCurrentDirectory()` inside the NativeAOT `.app` bundle,
nor that the AppleAppBuilder NativeAOT library-mode path packages
Content identically to Mono.
- Reasoning it should work: sibling Content files in this project
(`NativeLibrary.dll`, `NativeConsoleApp.exe`) are already deployed and
found on Apple, and under NativeAOT there is no managed-assembly vfs
mapping for #46856 to collide with — but this needs a CI run to confirm.

## Validation

- Build-validated: **No** — Apple NativeAOT cross-build is not available
in the agent environment.
- Requested: run `System.Diagnostics.FileVersionInfo.Tests` on the
`iossimulator` / `maccatalyst` `AllSubsets_NativeAOT` legs and confirm
`FileVersionInfo_CustomManagedAssembly` passes with no `identical vfs
mappings` packaging error.

## Suggested reviewers / area contacts

These tests were enabled on Apple NativeAOT by #125437 —
`@kotlarmilos`, could you (or the mobile/NativeAOT folks) confirm the
Content asset is bundled at the app's working directory under NativeAOT
library mode? Area owners: `@dotnet/area-system-diagnostics`.

> [!NOTE]
> This PR was generated by an AI/Copilot agent (`ci-failure-fix`) as a
best-effort, non-muting candidate fix. Please review carefully before
merging.




> [!NOTE]
> <details>
> <summary>🔒 Integrity filter blocked 17 items</summary>
>
> The following items were blocked because they don't meet the GitHub
integrity level.
>
> - [#128501](#128501)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#104998](#104998)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#104750](#104750)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#97491](#97491)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#76276](#76276)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#78999](#78999)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#76417](#76417)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#69571](#69571)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#62435](#62435)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#61444](#61444)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#35376](#35376)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#193](#193)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#34218](#34218)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#38914](#38914)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#44747](#44747)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - #130125 `issue_read`: has lower integrity than agent
requires. The agent cannot read data with integrity below "approved".
> - ... and 1 more item
>
> To allow these resources, lower `min-integrity` in your GitHub
frontmatter:
>
> ```yaml
> tools:
>   github:
>     min-integrity: approved  # merged | approved | unapproved | none
> ```
>
> </details>


> Generated by [CI Outer-Loop Failure
Fixer](https://github.com/dotnet/runtime/actions/runs/28910596516/agentic_workflow)
· ● 9.3M ·
[◷](https://github.com/search?q=repo%3Adotnet%2Fruntime+%22gh-aw-workflow-id%3A+ci-failure-fix%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: CI Outer-Loop Failure Fixer, engine:
copilot, version: 1.0.40, model: claude-opus-4.8, id: 28910596516,
workflow_id: ci-failure-fix, run:
https://github.com/dotnet/runtime/actions/runs/28910596516 -->

<!-- gh-aw-workflow-id: ci-failure-fix -->

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Milos Kotlar <kotlarmilos@gmail.com>
eiriktsarpalis pushed a commit that referenced this pull request Jul 15, 2026
… on Apple NativeAOT (refs #130253) (#130328)

Workflow artifact: ci-fix
Artifact kind: help
Linked KBE: #130253

> [!IMPORTANT]
> **Help-wanted / needs-review draft.** This is a best-effort candidate
fix that I could **not** build-validate in the agent environment (no
Apple NativeAOT cross-build is available here). It is a genuine,
**non-muting** change — it does not disable, skip, or `[ActiveIssue]`
the test. Please validate on the Apple NativeAOT library-test legs
before merging.

## Root cause

On the Apple **NativeAOT** library-test legs (`iossimulator` /
`maccatalyst` `AllSubsets_NativeAOT`, e.g. build
[1494308](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1494308)),
`System.Diagnostics.Tests.FileVersionInfoTest.FileVersionInfo_CustomManagedAssembly`
fails with:

```
System.IO.FileNotFoundException : .../System.Diagnostics.FileVersionInfo.Tests.app/System.Diagnostics.FileVersionInfo.TestAssembly.dll
```

The test opens its companion assembly **by file path** to read PE
version metadata — it never loads or executes it
(`FileVersionInfoTest.cs:25`):

```csharp
VerifyVersionInfo(Path.Combine(Directory.GetCurrentDirectory(), TestAssemblyFileName), ...);
// TestAssemblyFileName = "System.Diagnostics.FileVersionInfo.TestAssembly.dll"
```

In the test `.csproj`, for Apple mobile the TestAssembly was included as
a **plain `<ProjectReference>`**. Under NativeAOT that assembly is
compiled into the native image, so **no loose `.dll` is deployed** next
to the app and `Directory.GetCurrentDirectory()/...TestAssembly.dll`
does not exist → `FileNotFoundException`. Under Apple **Mono** the
managed assembly is still deployed as a file, which is why the test
passes there.

The existing `[ActiveIssue(".../124344", IsAppleMobile && IsCoreCLR)]`
on this test does **not** apply here: `PlatformDetection.IsCoreCLR =>
IsNotMonoRuntime && IsNotNativeAot` is `false` under NativeAOT, so the
test genuinely runs (and fails) on the NativeAOT leg.

These NativeAOT library tests on Apple mobile were newly enabled by
#125437.

## Candidate change

Deploy the TestAssembly as a **Content** data file on the Apple
NativeAOT leg (exactly as already done for desktop), while keeping the
plain project reference for Apple **Mono**, where the
[#46856](#46856) vfs-mapping
workaround still applies:

- `TargetsAppleMobile && UseNativeAotRuntime` → Content copy (**new**).
- `TargetsAppleMobile && !UseNativeAotRuntime` (Mono) → plain reference
(unchanged).
- Browser and desktop → unchanged.

Only the Apple-NativeAOT branch changes; the MSBuild conditions leave
Mono Apple, browser, and desktop provably untouched, and never select
both `<ProjectReference>` items at once.

## What is unverified (why this is a draft)

- I could not run an Apple NativeAOT build here, so I have **not**
confirmed the Content `.dll` actually lands at
`Directory.GetCurrentDirectory()` inside the NativeAOT `.app` bundle,
nor that the AppleAppBuilder NativeAOT library-mode path packages
Content identically to Mono.
- Reasoning it should work: sibling Content files in this project
(`NativeLibrary.dll`, `NativeConsoleApp.exe`) are already deployed and
found on Apple, and under NativeAOT there is no managed-assembly vfs
mapping for #46856 to collide with — but this needs a CI run to confirm.

## Validation

- Build-validated: **No** — Apple NativeAOT cross-build is not available
in the agent environment.
- Requested: run `System.Diagnostics.FileVersionInfo.Tests` on the
`iossimulator` / `maccatalyst` `AllSubsets_NativeAOT` legs and confirm
`FileVersionInfo_CustomManagedAssembly` passes with no `identical vfs
mappings` packaging error.

## Suggested reviewers / area contacts

These tests were enabled on Apple NativeAOT by #125437 —
`@kotlarmilos`, could you (or the mobile/NativeAOT folks) confirm the
Content asset is bundled at the app's working directory under NativeAOT
library mode? Area owners: `@dotnet/area-system-diagnostics`.

> [!NOTE]
> This PR was generated by an AI/Copilot agent (`ci-failure-fix`) as a
best-effort, non-muting candidate fix. Please review carefully before
merging.




> [!NOTE]
> <details>
> <summary>🔒 Integrity filter blocked 17 items</summary>
>
> The following items were blocked because they don't meet the GitHub
integrity level.
>
> - [#128501](#128501)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#104998](#104998)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#104750](#104750)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#97491](#97491)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#76276](#76276)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#78999](#78999)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#76417](#76417)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#69571](#69571)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#62435](#62435)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#61444](#61444)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#35376](#35376)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#193](#193)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#34218](#34218)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#38914](#38914)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - [#44747](#44747)
`search_pull_requests`: has lower integrity than agent requires. The
agent cannot read data with integrity below "approved".
> - #130125 `issue_read`: has lower integrity than agent
requires. The agent cannot read data with integrity below "approved".
> - ... and 1 more item
>
> To allow these resources, lower `min-integrity` in your GitHub
frontmatter:
>
> ```yaml
> tools:
>   github:
>     min-integrity: approved  # merged | approved | unapproved | none
> ```
>
> </details>


> Generated by [CI Outer-Loop Failure
Fixer](https://github.com/dotnet/runtime/actions/runs/28910596516/agentic_workflow)
· ● 9.3M ·
[◷](https://github.com/search?q=repo%3Adotnet%2Fruntime+%22gh-aw-workflow-id%3A+ci-failure-fix%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: CI Outer-Loop Failure Fixer, engine:
copilot, version: 1.0.40, model: claude-opus-4.8, id: 28910596516,
workflow_id: ci-failure-fix, run:
https://github.com/dotnet/runtime/actions/runs/28910596516 -->

<!-- gh-aw-workflow-id: ci-failure-fix -->

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Milos Kotlar <kotlarmilos@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants