mirror of
https://github.com/OPCFoundation/UA-.NETStandard.git
synced 2026-10-16 21:02:51 +08:00
d623007a3f
# Description Removes the Azure Pipelines CI and package-publishing definitions from `master`. GitHub Actions already owns all CI and package publishing for `master`, but pushes to `master` still queued the Azure definitions. They duplicated the Actions work and posted failing checks, for example [`Nuget Preview (Push Nuget Preview Pack Nugets Debug)`](https://github.com/OPCFoundation/UA-.NETStandard/runs/109065914524) on `19dc504c5`. ## Removed - `azure-pipelines.yml`, `azure-pipelines-preview.yml` - `.azurepipelines/` templates: `ci.yml`, `coverage.yml`, `preview.yml`, `sample-ha-longhaul.yml`, `sln.yml`, `test.yml`, `test-aot.yml` - Helpers only those templates used: `get-matrix.ps1`, `get-root.ps1`, `evaluate-test-results.ps1` - `TrxGateScriptTests`: it tested only `evaluate-test-results.ps1`. The Actions equivalent, `.github/scripts/get-test-verdict.ps1`, keeps its own `CiTestVerdictTests`. ## Kept **OneFuzz:** `.azurepipelines/onefuzz.yml` stays. Submitting to the internal OneFuzz service needs the Azure DevOps-only `onefuzz-task`, which has no GitHub Actions equivalent. The pipeline has no push, PR or schedule trigger, so it never runs on `master` pushes. The public drop build keeps running in the GitHub `fuzz-public-drop` job. **Scripts GitHub Actions still invokes:** these stay in `.azurepipelines/`, so every workflow path and `release.yml`'s candidate-bound checkout keep working. Only `generate-slnx.ps1` changes, and only its comment. | Script | Used by | | --- | --- | | `set-version.ps1` | buildandtest, nightly, nuget-publish, docker-image, stress / stability / long-haul, `run-dotnet-tests` action | | `generate-slnx.ps1`, `signlist{Debug,Release}.txt`, `validate-source-generator-packages.ps1` (+ `expected-packages.txt`) | nuget-publish | | `package-version-policy.ps1`, `validate-nuget-package-set.ps1`, `validate-preview-package-ordering.ps1`, `assert-published-packages-match.ps1` | nuget-publish, release | | `check-coverage.ps1` | buildandtest, nightly | | `validate-migration-plugin.ps1` | buildandtest | I didn't rename the directory on purpose. `release.yml` checks out the candidate commit and runs `./.azurepipelines/package-version-policy.ps1` from it, so moving the scripts would break promotion of any candidate built before the move. ## Docs and comments - `UA.slnx` drops the deleted files. - `codecov.yml`, `coverage-thresholds.json`, `targets.props`, the Redundancy sample test comments, the `.github` scripts and workflows, `CONTRIBUTING.md`, `docs/` and `fuzzing/` no longer describe Azure as running on `master` (`/azp run`, the `azure` Codecov flag, "the Azure gate", the Azure long-haul and AoT legs). - In the Developer Guide, the "Triggering a pipeline run" and "Migration status" sections are replaced by "Pull requests from outside contributors" and "Azure Pipelines on other branches". - The new section names `onefuzz.yml` as the one remaining Azure definition. - It keeps the warning that the `Release` ruleset's Azure required check must be lifted before cutting a new `release/2.<minor>` branch. - `master` is merged in, including the #4555 docs rewrite. Its new `docs/RedundancySampleTests.md` needed the Azure references removed again. `docs/README.md` already had none. ## Reviewer notes - **Azure DevOps side (admin action, not in this PR):** the definitions are configured in the Azure DevOps portal. With the YAML gone, `master` pushes give the CI and preview definitions nothing to run. Disabling definition 14's push trigger/schedule, definition 16's build-completion trigger, and the stale definition 13 stops any residual "file not found" runs. Leave the OneFuzz definition enabled. - `master378`, the 1.x `release/*` lines and the frozen `release/2.0.0` keep their own `azure-pipelines.yml`. This PR only touches `master`. ## Related Issues - Follow-up to #4513 (GitHub Actions for CI and nightly). ## Checklist - [ ] I have signed the [CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf) and read the [CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md) doc. - [ ] I have added tests that prove my fix is effective or that my feature works and increased code coverage. - [x] I have added all necessary documentation. - [ ] I have verified that my changes do not introduce (new) build or analyzer warnings. - [ ] I ran **all** tests locally using the **UA.slnx** solution against at least .net **framework** and .net **10**, and all passed. - [ ] I fixed **all** failing and flaky tests in the CI pipelines and **all** CodeQL warnings. - [ ] I have addressed **all** PR feedback received. This PR removes a test and adds none. Locally, at `9b00da817`, the full `Opc.Ua.Tools.Tests` suite passed on net10.0: 884 passed, 1 skipped. The later commits (OneFuzz restore, merge with `master`) touch only YAML and docs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
68 lines
3.2 KiB
JSON
68 lines
3.2 KiB
JSON
{
|
|
"$comment": [
|
|
"Coverage gates for the UA .NET Standard stack. These are the ENFORCED rules;",
|
|
"see .azurepipelines/check-coverage.ps1 for the implementation and",
|
|
"docs/DeveloperGuide.md for the contributor-facing description.",
|
|
"Rates are percentages (0-100).",
|
|
"",
|
|
"codecov.io is still uploaded to, but only for reporting - its own",
|
|
"codecov/project and codecov/patch statuses are informational (see",
|
|
"codecov.yml) so that there is exactly one gate rather than two sets of",
|
|
"thresholds that can disagree about the same pull request.",
|
|
"",
|
|
"IMPORTANT: the coverage check is ADVISORY. The GitHub Actions 'code coverage' job",
|
|
"reports a clean failure when these thresholds are missed, so the miss is visible on",
|
|
"the pull request, but it does not belong in the branch ruleset. The required check is",
|
|
"'build-and-test summary', which only asserts that the tests themselves passed.",
|
|
"",
|
|
"'project' is an absolute floor over the whole merged coverage report.",
|
|
"Ratchet minimumLineRate/minimumBranchRate upward (together with baselineLineRate)",
|
|
"as coverage improves - never downward to make a red check go green.",
|
|
"",
|
|
"The initial values are seeded from the last codecov project reading (73.61%) with",
|
|
"headroom, because the in-pipeline number had not been observed yet when the gate",
|
|
"was introduced.",
|
|
"",
|
|
"The report is assembled from whichever legs of the run published Cobertura fragments,",
|
|
"so the number moves with the matrix: the pull-request run is the reference, and",
|
|
"scheduled runs read higher because the Debug / .NET 8 / .NET 9 / netstandard legs",
|
|
"contribute too. Re-calibrate against the pull-request figure.",
|
|
"",
|
|
"'patch' mirrors the old codecov/patch semantics: changed lines must reach",
|
|
"target percent, tolerating threshold percentage points. The requirement is",
|
|
"graduated by how much actually changed, because a percentage over a handful of",
|
|
"lines is noise: one uncovered line in a two-line fix reads as 50% and would fail",
|
|
"a flat floor, which teaches authors to ignore the check rather than fix it.",
|
|
"'bands' is consulted in order and the first band whose maxChangedLines covers the",
|
|
"patch wins; a band with enforced=false reports a warning instead of failing.",
|
|
"Anything larger than the last band falls through to target-threshold and is",
|
|
"always enforced, because at that size the percentage is meaningful and a big",
|
|
"untested change is exactly what the check exists to catch.",
|
|
"",
|
|
"'ignore' mirrors the exclusion list in codecov.yml so both report on the same",
|
|
"code - change the two together - and is applied to BOTH the project floor and",
|
|
"the changed-lines check."
|
|
],
|
|
"project": {
|
|
"minimumLineRate": 70.0,
|
|
"minimumBranchRate": 60.0,
|
|
"baselineLineRate": 73.6,
|
|
"advisoryDeltaTolerance": 1.0
|
|
},
|
|
"patch": {
|
|
"target": 80.0,
|
|
"threshold": 5.0,
|
|
"bands": [
|
|
{ "maxChangedLines": 10, "target": 50.0, "enforced": false },
|
|
{ "maxChangedLines": 100, "target": 60.0, "enforced": false }
|
|
]
|
|
},
|
|
"ignore": [
|
|
"tests/**",
|
|
"samples/**",
|
|
"**/obj/**",
|
|
"**/bin/**",
|
|
"**/*.g.cs"
|
|
]
|
|
}
|