AgentSkillsCN

Skill

技能

SKILL.md

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

sh
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.toml snippet: azure_devops_rust_api = { version = "X.Y.0", ... }

5. Update the CHANGELOG

Edit CHANGELOG.md:

  • Insert ## [X.Y.0] between ## [Unreleased] and the existing ### Changes section (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

6. Commit and push

sh
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

sh
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 usage
  • autorust/codegen/src/codegen_operations/request_builder_send.rs — Pipeline::send() calls, api-version parameter
  • autorust/codegen/src/codegen_operations/request_builder_into_future.rs — into_body()/into_model() calls
  • autorust/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 handling
  • azure_devops_rust_api/src/date_time.rs — error handling
  • azure_devops_rust_api/src/telemetry.rs — Policy trait, Response types

4. Update CHANGELOG.md

Add an entry under ## [Unreleased]:

markdown
### 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

sh
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 requests
  • azure_core::http::Request / RawResponse — request/response types
  • azure_core::http::RetryOptions / Transport — client configuration
  • azure_core::http::Context — request context
  • azure_core::http::policies::Policy — pipeline policies (telemetry.rs)
  • azure_core::credentials::TokenCredential — authentication (auth.rs)
  • azure_core::error::{Error, ErrorKind, Result} — error types