2 个版本 (1 个稳定版)
使用旧的 Rust 2015
1.0.0 | 2018 年 9 月 16 日 |
---|---|
0.0.1 | 2016 年 3 月 9 日 |
#1915 in 开发工具
49KB
1K SLoC
semantic-rs
本工具的目的是帮助人们按照 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_NAME
和 GIT_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-dev
,pkg-config
,zlib1g-dev
- Mac Homebrew:
openssl
- Ubuntu:
- 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