1 个不稳定版本
0.1.1 | 2023年4月9日 |
---|
#2074 in 开发工具
115KB
1K SLoC
部署变更日志
一个基于 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 令牌或凭证配置 BitbucketClient
、JiraClient
和 SpinnakerClient。可以添加自定义 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