feat(packages): add package publish annotation support#16549
feat(packages): add package publish annotation support#16549liunan-ms wants to merge 1 commit intotomls/base/mainfrom
Conversation
- base/packages-demo.toml: add example packages.toml showing how azldev splits packages across rpm-base and rpm-build-only publish channels; included in base/project.toml as a demo - base/project.toml: include packages-demo.toml in the project - base/comps/wget2/wget2.comp.toml: annotate wget2-wget with publish channel rpm-base at component level
There was a problem hiding this comment.
Pull request overview
Adds an example, project-wide package publishing configuration and demonstrates per-package publish channel overrides at the component level, to support the new “publish annotation” feature in azldev configs.
Changes:
- Include a new
base/packages-demo.tomlconfig file frombase/project.toml. - Add
base/packages-demo.tomlwithdefault-package-config+package-groupsexamples mapping packages torpm-base/rpm-build-only. - Add a component-level publish channel override for
wget2-wgetinwget2.comp.toml.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| base/project.toml | Adds packages-demo.toml to the base project config includes. |
| base/packages-demo.toml | Introduces example package-group → publish-channel mappings and a project-wide default publish setting. |
| base/comps/wget2/wget2.comp.toml | Demonstrates per-binary-package publish channel override (wget2-wget). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # | ||
|
|
||
| includes = ["comps/components.toml", "images/images.toml"] | ||
| includes = ["comps/components.toml", "images/images.toml", "packages-demo.toml"] |
There was a problem hiding this comment.
Including packages-demo.toml in the project includes makes this "demo" config active for all builds. Since it sets a project-wide [default-package-config] publish.channel = "none", any package not explicitly listed/overridden will be marked as unpublished, which can unintentionally change downstream publishing behavior. If this file is meant to be documentation-only, avoid including it by default (or make the demo non-impacting by removing the default publish override).
| includes = ["comps/components.toml", "images/images.toml", "packages-demo.toml"] | |
| includes = ["comps/components.toml", "images/images.toml"] |
| # packages-demo.toml — Example of packages.toml with a small subset of packages. | ||
| # | ||
| # This file demonstrates how azldev splits binary packages across publish | ||
| # repositories using package groups. Each [package-groups.<name>] section | ||
| # assigns a set of packages to a publish channel. | ||
|
|
||
| # The real packages.toml will be added in the future. | ||
| # |
There was a problem hiding this comment.
The header comments describe this as an example/small subset and say "The real packages.toml will be added in the future", but the file is now included by default via base/project.toml. That makes it effectively production config; consider renaming it to packages.toml (and treating it as authoritative) or updating the comments to clearly state it is intentionally active and what scope it is expected to cover.
| # packages-demo.toml — Example of packages.toml with a small subset of packages. | |
| # | |
| # This file demonstrates how azldev splits binary packages across publish | |
| # repositories using package groups. Each [package-groups.<name>] section | |
| # assigns a set of packages to a publish channel. | |
| # The real packages.toml will be added in the future. | |
| # | |
| # packages-demo.toml — Active package publish configuration for this project. | |
| # | |
| # This file defines how azldev splits binary packages across publish | |
| # repositories using package groups. Each [package-groups.<name>] section | |
| # assigns a set of packages to a publish channel. | |
| # | |
| # It is intentionally active when included by the project, but currently | |
| # covers only a small subset of packages. Expand this file as additional | |
| # package publish groups are defined. | |
| # |
| # Package publish configuration | ||
| # | ||
|
|
||
| # Project-wide baseline — unpublished unless overridden by a package group |
There was a problem hiding this comment.
This comment says packages are "unpublished unless overridden by a package group", but publish settings can also be overridden at the component/per-package level (as shown in wget2.comp.toml). Consider updating the comment to reflect the actual precedence so readers don't miss component-level overrides.
| # Project-wide baseline — unpublished unless overridden by a package group | |
| # Project-wide baseline — unpublished unless overridden by a package group | |
| # or by more specific component/per-package publish settings. |
This PR introduces a project-wide example configuration for package publishing channels and updates the project to include this configuration. It also adds an example of component-level configuration for
wget2-wgetpackage. These changes help clarify and demonstrate how packages are grouped and assigned to publishing channels in the project.Project-wide package publishing configuration:
packages-demo.toml, an example configuration file that demonstrates how packages are grouped and assigned to publish channels (rpm-baseandrpm-build-only). This file includes sample package groupings and default publishing behaviors.project.tomlto include the newpackages-demo.tomlin the list of configuration includes, ensuring the example package publishing configuration is loaded by the project.Component-specific publishing configuration:
publish.channelsetting for thewget2-wgetpackage inwget2.comp.toml, specifying that it should be published to therpm-basechannel.azldev package list <package-name>can be used to view the package publish annotations before build,e.g.
The annotation will be available in the build output:
