-
Notifications
You must be signed in to change notification settings - Fork 314
[Ready for EngSys Review] ESRP Publishing #3187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…s in output folders
There was a problem hiding this comment.
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 implements a new ESRP-based publishing strategy for Rust crates that uses cargo publish --dry-run
to package crates and publishes them through ESRP instead of directly to crates.io. The changes include:
- Replacing direct crates.io publishing with ESRP release process
- Switching from
safeName
toreleaseInBatch
parameters for artifact configuration - Refactoring
Pack-Crates.ps1
to usecargo publish --dry-run
instead of custom vendoring - Updating package info extraction to work with
.crate
files instead ofCargo.toml
Reviewed Changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
sdk/storage/ci.yml | Adds release parameters for storage crates and updates artifact configuration with releaseInBatch |
sdk/servicebus/ci.yml | Adds release parameter for servicebus crate and updates artifact configuration |
sdk/keyvault/ci.yml | Adds release parameters for keyvault crates and updates artifact configuration |
sdk/identity/ci.yml | Adds release parameter for identity crate and updates artifact configuration |
sdk/eventhubs/ci.yml | Adds release parameters for eventhubs crates and updates artifact configuration |
sdk/cosmos/ci.yml | Adds release parameter for cosmos crate and updates artifact configuration |
sdk/core/ci.yml | Adds release parameters for core crates with inconsistent naming and updates artifact configuration |
sdk/canary/ci.yml | Adds release parameters for canary crates and updates artifact configuration |
eng/scripts/Pack-Crates.ps1 | Refactors crate packing to use cargo publish --dry-run and removes custom vendoring logic |
eng/scripts/Language-Settings.ps1 | Updates to extract package info from .crate files instead of Cargo.toml |
eng/pipelines/templates/stages/archetype-sdk-client.yml | Filters artifacts based on releaseInBatch parameter |
eng/pipelines/templates/stages/archetype-rust-release.yml | Replaces direct crates.io publishing with ESRP release process and removes yank job |
eng/pipelines/templates/jobs/pack.yml | Adds logic to configure crate packing based on release parameters |
…he literal "$(ArtifactName)"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing blocking if we need to get something in, but I'd really love to see us stop pushing and popping directories (at least don't use the manual set-location and restore way). There should be no reason to change directories with cargo
.
Warning
SERVICE OWNERS: no need to review this PR. I'm making engsys changes to ci.yml files.
Really fixes #3035
[keeping as draft to avoid notifying everyone]
A new release crate-packing strategy for Rust which uses
cargo publish --dry-run
to produce the crates:This uses existing tooling to do the build with no vendoring or separate packing. Release order sorting can be read from the tool output and doesn't need to be computed from metadata.
cargo publish
also verifies that dependencies defined in the package'sCargo.toml
are published and fails if they are not published.This also supports the current Pre-GA approach of not incrementing core's versions after release as the workspace dependency includes
For example:
If a package depends on
[email protected]
and there is no[email protected]
published on crates.io, the command will fail. It's possible to "atomically" generate packages for releases with unreleased dependencies if those dependencies are included in the package command (e.g.storage_blobs
depending onstorage_common
)Formatting:
Formatting attempts to match reasonable outputs. Redirecting stderr from
cargo publish
would normally result in red console text. Thecargo publish
command is also grouped: https://dev.azure.com/azure-sdk/public/_build/results?buildId=5461494&view=logs&j=b766ebde-1fdb-5f11-1350-46ddc53b23cf&t=7ef29fa0-f532-5653-3473-16dc04608431&l=104Tests: