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
ci: auto-publish plugins on push to their source folder
publish-plugins.yml now has a `push` trigger with `paths:` filters
on each plugin folder, plus a `dorny/paths-filter` step that
identifies which specific plugins changed in the commit. Only the
changed plugin(s) get packed + pushed; unchanged plugins are
skipped entirely so the workflow run is cheap.
The existing `workflow_dispatch` selector still works for manual
republish (post-NuGet-outage retry, etc.).
`--skip-duplicate` keeps the auto-trigger safe: a code edit that
forgets to bump the csproj `<Version>` runs the workflow but is a
no-op on nuget.org, so the code doesn't ship until the version
bumps. That's the enforcement against accidentally shipping the
same version with different bits.
CONTRIBUTING.md updated to document the auto-trigger.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -106,8 +106,10 @@ To publish a plugin:
106
106
107
107
1. Bump `<Version>` in the relevant csproj (`src/AzureTray.Plugin.Contracts/AzureTray.Plugin.Contracts.csproj`, etc.).
108
108
2. Commit and push to `main`.
109
-
3. Open the GitHub Actions UI → **Publish plugins** workflow → **Run workflow** → choose which package (`Contracts`, `PIM`, `LAPS`, or `all`).
110
-
4. The workflow ([`publish-plugins.yml`](.github/workflows/publish-plugins.yml)) packs the selected csproj(s), attests build provenance, and pushes to nuget.org (when `NUGET_API_KEY` is set). `--skip-duplicate` makes pushes idempotent — selecting "all" without bumping any csproj is safe and produces no new versions.
109
+
110
+
The [`publish-plugins.yml`](.github/workflows/publish-plugins.yml) workflow fires automatically: it uses path filters to detect which plugin folder changed in your push, packs only that csproj, attests build provenance, and pushes to nuget.org (when `NUGET_API_KEY` is set). `--skip-duplicate` makes pushes idempotent — if you forget to bump `<Version>`, the push is a no-op rather than a failure, but **your code doesn't reach nuget.org until you bump**. That's the enforcement.
111
+
112
+
You can also trigger the workflow manually from the GitHub Actions UI → **Publish plugins** → **Run workflow** → pick `Contracts`, `PIM`, `LAPS`, or `all`. Useful for retrying after a transient failure or republishing after a NuGet-side outage.
111
113
112
114
For test-publishing prereleases from a developer machine, see [scripts/publish-plugins-prerelease.ps1](scripts/publish-plugins-prerelease.ps1) — it stamps a `-preview.YYYYMMDDHHMM` suffix on top of each csproj's declared `<Version>`.
0 commit comments