2 个版本 (1 个稳定版)

使用旧的 Rust 2015

1.0.0 2018 年 9 月 16 日
0.0.1 2016 年 3 月 9 日

#1915 in 开发工具

MIT 许可证

49KB
1K SLoC

semantic-rs

Build Status

本工具的目的是帮助人们按照 semver 规范发布 crate。

目前,如果您正在构建一个新的 crate,发布新版本需要大量工作。您需要决定新版本将是主版本、次版本还是补丁版本。一旦做出决定,下一步就是编写一个包含所有变更的变更日志。然后增加 Cargo.toml 中的版本号。提交一个更改和一个新标签作为新版本,最后将其发布到 crates.io。如果您需要每次都重复这些步骤,那么犯错误的可能性很高。semantic-rs 会自动完成所有这些步骤,让您可以更多地专注于开发新功能。

工作流程

  • 在您的计算机上安装 semantic-rs。
  • 当您向您的仓库提交更改时,请遵循 Angular.js 提交信息约定
  • 开发完成后,运行 semantic-rs
  • 根据您的更改,它将确定下一个版本号,生成一个变更日志,提交并创建一个新标签
  • 它还会在 Cargo.toml 中增加版本号(也会提交)
  • 为您运行 cargo package
  • 在 GitHub 上创建一个发布
  • 将新版本发布到 crates.io
  • 完成 🚀

用法

先决条件

您需要以下数据

运行它

semantic-rs 依赖于通过环境变量传递的一些数据。在我们的示例中,我们明确指定了这些变量,但如果您经常运行 semantic-rs,您可能希望将这些配置在您的 shell 配置文件中。

设置 GIT_COMITTER_NAMEGIT_COMMITTER_EMAIL 是可选的。如果您省略这些,我们将使用您(全局)的 git 配置设置。

如果您不带任何参数运行 semantic-rs,它将在您的当前工作目录中操作

$ export GH_TOKEN=<GHTOKEN>
$ export CARGO_TOKEN=<CARGOTOKEN>
$ export GIT_COMMITTER_NAME=<Your name>
$ export GIT_COMMITTER_EMAIL=<Your email>
$ semantic-rs
#...

默认情况下,它以 dry-run 模式运行。这意味着它不会自动执行更改。您可以看到将要执行哪些步骤,以及生成的变更日志。

要执行更改,请传递 -w 作为参数

$ semantic-rs -w yes

这执行以下操作

  • 创建或更新包含所有更改的 Changelog.md
  • 创建包含以下更改的新提交
    • Changelog.md
    • 带有新版本号的更新 Cargo.toml
  • 创建指向最近创建的最后一个提交并包含新版本 Changelog 的新注解 git 标签
  • 将新版本发布到 crates.io
  • 在 GitHub 上发布新版本
  • 将新提交和标签推送到 GitHub

运行测试

要运行 semantic-rs 的测试

  • 单元测试: cargo test
  • 集成测试: ./tests/integration/run-locally.sh

开发

需求

  • cmake
  • OpenSSL 开发包
    • Ubuntu: libssl-devpkg-configzlib1g-dev
    • Mac Homebrew: openssl
  • Rust 1.15 或更高版本

对于 OS X > 10.10

请注意,由于 OS X 10.11,Apple 已不再提供 OpenSSL 的开发头文件。为了使其正常工作,您需要使用以下变量配置运行 cargo

OPENSSL_INCLUDE_DIR=`brew --prefix openssl`/include \
OPENSSL_LIB_DIR=`brew --prefix openssl`/lib \
cargo build

本地构建

克隆此项目

$ git clone git@github.com:semantic-rs/semantic-rs.git

作为一个测试项目,您可以使用这个: https://github.com/badboy/test-project

也克隆它

$ git clone https://github.com/badboy/test-project.git

在您的顶级目录中现在应该有两个文件夹

$ ls -l
semantic-rs
test-project

切换到 semantic-rs 文件夹并运行 cargo build。然后您可以对测试项目运行 semantic-rs

$ cargo run -- -p ../test-project
   Compiling semantic-rs v0.1.0 (file:///Users/janschulte/projects/semantic-rs/semantic-rs)
     Running `target/debug/semantic-rs -p ../test-project`
semantic.rs 🚀
Analyzing your repository
Current version: 2.0.3
Analyzing commits
Commits analyzed. Bump would be Minor
New version would be: 2.1.0
Would write the following Changelog:
====================================
## v2.1.0 (2016-07-03)


#### Features

*   Math mode ([24afa46f](24afa46f))

#### Bug Fixes

*   Into the void ([9e54f4bf](9e54f4bf))

====================================
Would create annotated git tag

由于没有传递 -,它只会打印出将要执行的操作。请注意,如果在您的本地计算机上运行,输出可能会有所不同。

在 CI 环境中运行 semantic-rs

请确保设置 CI=true 环境变量以禁用 dry-run 模式。

贡献

欢迎在 GitHub 上提交错误报告和拉取请求。您可以在 CONTRIBUTING.md 中找到有关贡献的更多信息。本项目旨在成为安全、友好的协作和讨论空间,并期望贡献者遵守 贡献者公约 行为准则。

许可

本项目采用 MIT 许可证。

依赖项

~21–31MB
~573K SLoC