Skills
Creating a release
1. Ensure changes are on main
All changes for the release (dependency updates, bug fixes, etc.) should already be merged to main.
2. Create a release branch
git checkout main
git pull
git checkout -b release-X.Y.0
3. Bump the crate version
Edit azure_devops_rust_api/Cargo.toml:
- Update
version = "X.Y.0"
4. Update the README version
Edit azure_devops_rust_api/README.md:
- Update the example
Cargo.tomlsnippet:azure_devops_rust_api = { version = "X.Y.0", ... }
5. Update the CHANGELOG
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
6. Commit and push
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.0
7. Create a PR and merge
Create a PR to main. After merging, the crate can be published to crates.io.
Updating azure_core and azure_identity
Overview
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.
Process
1. Find the latest versions
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).
2. Update version strings
Edit azure_devops_rust_api/Cargo.toml:
azure_core = { version = "X.Y", ... }in[dependencies]azure_identity = "X.Y"in[dev-dependencies]
3. Build and fix
cargo check --all-features
cargo check --all-features --examples
If 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
4. Update CHANGELOG.md
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).
5. Branch, commit, push
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.Y
The README (azure_devops_rust_api/README.md) version string is only updated at release time, not during dependency updates.
Key azure_core types used by this crate
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