#git-commit #changelog #bitbucket #jira #git-repository #release-notes #spinnaker

bin+lib deployment-changelog

一个基于 Git 仓库中部署或提交范围的生成变更日志的 Rust 库。它与 Bitbucket、Jira 和 Spinnaker 集成,以检索指定范围或 Spinnaker 环境的提交、拉取请求和问题信息。该包提供了一个结构化的 Changelog 对象,具有可读性强的显示表示。

1 个不稳定版本

0.1.1 2023年4月9日

#2074 in 开发工具

自定义许可证

115KB
1K SLoC

Rust 775 SLoC GraphQL 385 SLoC

部署变更日志

Crates.io Docs.rs

一个基于 Git 仓库中部署或提交范围的生成变更日志的 Rust 库。它与 Bitbucket、Jira 和 Spinnaker 集成,以检索指定范围或 Spinnaker 环境的提交、拉取请求和问题信息。该包提供了一个结构化的 Changelog 对象,具有可读性强的显示表示。

目录

特性

  • 获取 Git 提交范围内的提交、拉取请求和问题。
  • 为 Spinnaker 环境生成变更日志。
  • 与 Bitbucket、Jira 和 Spinnaker API 集成。
  • 以可读的格式序列化和显示变更日志。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
deployment_changelog = "0.1.0"

用法

要生成变更日志,您可以使用 Git 提交范围或 Spinnaker 环境。

示例

Git 提交范围的变更日志

use deployment_changelog::changelog::{Changelog, GitCommitRange};
use deployment_changelog::api::{bitbucket::BitbucketClient, jira::JiraClient};

// Create a BitbucketClient and JiraClient with their respective server URLs.
let bitbucket_client = BitbucketClient::new("https://your-bitbucket-url");
let jira_client = JiraClient::new("https://your-jira-url");

// Define the Git commit range for the changelog.
let commit_range = GitCommitRange {
    project: String::from("my-project"),
    repo: String::from("my-repo"),
    start_commit: String::from("abcdef123456"),
    end_commit: String::from("ghijkl789012")
};

// Generate a Changelog using the get_changelog_from_range method and print the formatted output.
let changelog = Changelog::get_changelog_from_range(&bitbucket_client, &jira_client, &commit_range).await.unwrap();
println!("{}", changelog);

Spinnaker 环境的变更日志

use deployment_changelog::changelog::{Changelog, CommitSpecifier, SpinnakerEnvironment};
use deployment_changelog::api::{bitbucket::BitbucketClient, jira::JiraClient, spinnaker::SpinnakerClient};

// Create a BitbucketClient, JiraClient, and SpinnakerClient with their respective server URLs.
let bitbucket_client = BitbucketClient::new("https://your-bitbucket-url");
let jira_client = JiraClient::new("https://your-jira-url");
let spinnaker_client = SpinnakerClient::new("https://your-spinnaker-url");

// Define the Spinnaker environment for the changelog.
let spinnaker_env = SpinnakerEnvironment {
    client: spinnaker_client,
    app_name: String::from("my-app"),
    env: String::from("my-environment")
};

// Create a CommitSpecifier using the Spinnaker environment.
let commit_specifier = CommitSpecifier::Spinnaker(spinnaker_env);

// Generate a Changelog using the get_changelog_from_spinnaker method and print the formatted output.
let changelog = Changelog::new(&bitbucket_client, &jira_client, &commit_specifier).await.unwrap();
println!("{}", changelog);

先决条件

在使用 deployment_changelog 包之前,请确保您有访问以下服务的权限

  • Bitbucket
  • Jira
  • Spinnaker [可选]

此外,您还需要为每个服务生成 API 令牌或凭证。

配置

要使用 deployment_changelog 包,您需要使用必要的 API 令牌或凭证配置 BitbucketClientJiraClientSpinnakerClient。可以添加自定义 TLS 证书和授权头到底层的 reqwest 客户端。

基本配置

let bitbucket_client = BitbucketClient::new("https://your-bitbucket-url");
let jira_client = JiraClient::new("https://your-jira-url");
let spinnaker_client = SpinnakerClient::new("https://your-spinnaker-url");

使用 reqwest 的自定义配置

对于更高级的配置选项,如自定义 TLS 证书或自定义授权头,您可以修改 BitbucketClient、JiraClient 和 SpinnakerClient 所使用的底层 reqwest 客户端。以下是如何使用自定义 TLS 证书和授权头配置客户端的示例

use deployment_changelog::api::{
    rest::{RestClient, RestClientBuilder},
    bitbucket::BitbucketClient,
};
use reqwest::{ClientBuilder, header::{HeaderMap, HeaderValue, AUTHORIZATION}};

let mut headers = HeaderMap::new();
headers.insert(AUTHORIZATION, HeaderValue::from_static("your-custom-authorization-header"));

let mut client_builder = RestClient::builder("https://your-bitbucket-url");
client_builder.client_builder = client_builder.client_builder
    .default_headers(headers)
    .danger_accept_invalid_certs(true); // Use this option with caution, only in a trusted environment.

let bitbucket_client = BitbucketClient::from_client(client.build()?);

CLI 使用

deployment_changelog 包还包括一个简单的命令行界面 (CLI),用于从公共 Bitbucket 和 JIRA 实例生成部署变更日志。要使用 CLI,您可以克隆仓库。

这个命令行工具接受参数以指定 Bitbucket 和 JIRA 服务器,以及提交指定器细节,如 Spinnaker 环境或 Git 提交范围。您可以使用以下命令构建和运行 CLI 工具,并提供必要的参数:cargo run

以下是如何使用 CLI 工具的示例

Spinnaker 指定器

export BITBUCKET_URL=https://your-bitbucket-url.com/
export JIRA_URL=https://your-jira-url.com/
export SPINNAKER_URL=https://your-spinnaker-url.com/

cargo run --all-features spinnaker important_service prod

Git 提交范围指定器

export BITBUCKET_URL=https://your-bitbucket-url.com/
export JIRA_URL=https://your-jira-url.com/

cargo run commit-range CATS clowder abc123def4567890a1b2c3d4e5f67890abcdef01 5f56c43386103d10c1cbb415d6f3132da16948a8

CLI 将在控制台输出变更日志。

版本兼容性

deployment_changelog crate 需要 Rust 1.53.0 或更高版本。

API 文档

docs.rs 上找到详细的 API 文档。

贡献

欢迎贡献!如果您有任何想法或改进,请随时提交 issue 或 pull request。

许可证

本项目采用 MIT 许可证。

依赖项

~23–40MB
~716K SLoC