All changes for the release (dependency updates, bug fixes, etc.) should already be merged to main.
git checkout main
git pull
git checkout -b release-X.Y.0Edit azure_devops_rust_api/Cargo.toml:
- Update
version = "X.Y.0"
Edit azure_devops_rust_api/README.md:
- Update the example
Cargo.tomlsnippet:azure_devops_rust_api = { version = "X.Y.0", ... }
Edit CHANGELOG.md:
- Insert
## [X.Y.0]between## [Unreleased]and the existing### Changessection (the changes stay, they just move under the new version heading) - At the bottom of the file, update the version comparison links:
- Change
[Unreleased]to compare from the new version:compare/X.Y.0...HEAD - Add a new link:
[X.Y.0]: https://github.com/microsoft/azure-devops-rust-api/compare/PREV.0...X.Y.0
- Change
git add CHANGELOG.md azure_devops_rust_api/Cargo.toml azure_devops_rust_api/README.md
git commit -m "Release X.Y.0"
git push -u origin release-X.Y.0Create a PR to main. After merging, the crate can be published to crates.io.
The azure_devops_rust_api crate depends on azure_core (runtime) and azure_identity (dev/examples). These are updated periodically to track the latest Azure SDK for Rust releases.
Check crates.io for the latest versions. They are released in lockstep and should use the same version.
Watch out for yanked versions (e.g. 0.30.0 was yanked, 0.30.1 replaced it).
Edit azure_devops_rust_api/Cargo.toml:
azure_core = { version = "X.Y", ... }in[dependencies]azure_identity = "X.Y"in[dev-dependencies]
cargo check --all-features
cargo check --all-features --examplesIf there are no compilation errors, you're done with code changes.
If there are errors, fixes may be needed in two places:
Code generator (for generated code errors — do NOT edit generated files directly):
autorust/codegen/src/codegen_operations/create_client_and_builder.rs— Pipeline, Transport, RetryOptions usageautorust/codegen/src/codegen_operations/request_builder_send.rs— Pipeline::send() calls, api-version parameterautorust/codegen/src/codegen_operations/request_builder_into_future.rs— into_body()/into_model() callsautorust/codegen/src/codegen_operations/response_code.rs— Response type definitions
After fixing codegen, regenerate with ./build.sh, then re-check.
Hand-written source (fix directly):
azure_devops_rust_api/src/auth.rs— TokenCredential, error handlingazure_devops_rust_api/src/date_time.rs— error handlingazure_devops_rust_api/src/telemetry.rs— Policy trait, Response types
Add an entry under ## [Unreleased]:
### Changes
- Update `azure_core` and `azure_identity` to X.Y.If code changes were needed, list them (see the 0.33.0 entry for a detailed example).
git checkout -b azure_core-X.Y
git add CHANGELOG.md azure_devops_rust_api/Cargo.toml [any other changed files]
git commit -m "Update azure_core, azure_identity to X.Y"
git push -u origin azure_core-X.YThe README (azure_devops_rust_api/README.md) version string is only updated at release time, not during dependency updates.
These are the areas most likely to break across versions:
azure_core::http::Pipeline— HTTP pipeline for sending requestsazure_core::http::Request/RawResponse— request/response typesazure_core::http::RetryOptions/Transport— client configurationazure_core::http::Context— request contextazure_core::http::policies::Policy— pipeline policies (telemetry.rs)azure_core::credentials::TokenCredential— authentication (auth.rs)azure_core::error::{Error, ErrorKind, Result}— error types