6 个版本 (破坏性更新)
0.4.1 | 2021 年 9 月 20 日 |
---|---|
0.4.0 | 2021 年 9 月 19 日 |
0.3.0 | 2021 年 9 月 11 日 |
0.2.0 | 2021 年 9 月 8 日 |
0.0.1 | 2021 年 7 月 3 日 |
#2310 in 开发工具
每月 38 次下载
65KB
1K SLoC
一个用于检查和列出一系列提交中受影响的资源的实用程序,当与单仓库一起使用时非常有用。
内容
用法
Is Effected 在仓库历史中操作一系列 Git 提交。要指定提交范围,可以使用 --from-commit-hash <commit-hash>
或 --from-reference <reference>
参数。提交范围从指定的提交开始,直到包含 HEAD
。必须使用这些参数之一,但不能同时使用。
在提交范围内,您可以执行两种可能的操作。您可以通过提供 --list
标志来列出所有受影响的资源。或者,您可以通过 --effects-current-directory
标志或 --effects <resources>
参数来检查特定资源是否受到影响。使用 --effects-current-directory
标志时,将检查受影响的资源是否在当前目录或子目录中。使用 --effects <resource>
参数时,您可以提供多个正则表达式,并检查是否任何受影响的资源与任何正则表达式匹配。如果满足任何效果检查条件,则 Is Effected 返回零状态码,否则返回非零状态码。必须提供这些输出参数之一,但不能同时使用。
用法 - Git 环境变量
在查找仓库时,Git 环境变量会被尊重。当设置了 $GIT_DIR
,它会优先使用,并从指定的目录开始搜索仓库。当没有设置 $GIT_DIR
时,Is Effected 会从当前目录开始搜索仓库。
用法 - 记录
使用 pretty_env_logger
和 log
库来提供日志记录功能。可以使用环境变量 RUST_LOG
来设置日志级别。更多详细信息,请参阅 https://crates.io/crates/pretty_env_logger。
CICD 示例
GitLab CI Rust 项目示例
通过 Cargo
有关通过 Cargo 安装的详细信息,请参阅 通过 Cargo 编译。
注意 - 此示例下载了最新的 0.*
版本。
example-stage:
stage: example-stage
image: rust
before_script:
- cargo install is_effected --version ^0
script:
- cd monorepo/
# Check the monorepo is effected in the merge request or else skip the stage.
- /usr/local/cargo/bin/is_effected --from-reference "origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" --effects-current-directory || exit 0
- ... rest of the stage
rules:
- if: $CI_MERGE_REQUEST_ID
通过二进制下载
有关二进制下载的详细信息,请参阅 下载二进制文件。
注意 - 此示例下载了版本 0.4.0
。
example-stage:
stage: example-stage
image: rust
before_script:
- wget -q -O tmp.zip "https://gitlab.com/DeveloperC/is_effected/-/jobs/artifacts/0.4.0/download?job=release-binary-compiling-x86_64-linux-musl" && unzip tmp.zip && rm tmp.zip
- is_effected="$(pwd)/is_effected"
script:
- cd monorepo/
# Check the monorepo is effected in the merge request or else skip the stage.
- ${is_effected} --from-reference "origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" --effects-current-directory || exit 0
- ... rest of the stage
rules:
- if: $CI_MERGE_REQUEST_ID
下载二进制文件
提供了静态链接编译的二进制文件的下载。访问 https://gitlab.com/DeveloperC/is_effected/-/releases 上的发布页面,以查看所有发布版本,发布说明中包含各种架构的二进制文件下载链接。
如果您不相信提供的二进制文件,另一种选择是自行编译并使其可用于远程下载,这样您的 CICD 等工具就可以下载它。
通过本地仓库编译
在本地检出代码仓库,切换到仓库目录,然后通过 Cargo 构建。使用 --release
标志可以生成优化的二进制文件,但编译时间会更长。
git clone [email protected]:DeveloperC/is_effected.git
cd is_effected/
cargo build --release
编译后的二进制文件位于 target/release/is_effected
。
通过 Cargo 编译
Cargo 是 Rust 的包管理器,install
子命令从 crates.io 拉取并本地编译二进制文件,将编译后的二进制文件放置在 $HOME/.cargo/bin/is_effected
。
cargo install is_effected
默认情况下,它会在执行时安装最新版本。您可以使用 --version
参数指定要安装的特定版本。对于某些环境,如 CICD 等,您可能想要固定版本。
例如:
cargo install is_effected --version 0.2.0
而不是固定到特定版本,您可以指定主版本或次要版本。
例如:
cargo install is_effected --version ^0
将下载最新的 0.*
发布版本,无论它是 0.2.2
还是 0.7.0
。
单元测试
单元测试套件有几个参数化测试,使用 Cargo 来设置和运行所有单元测试。
cargo test
问题/功能请求
要报告问题或请求新功能,请使用 https://gitlab.com/DeveloperC/is_effected/-/issues。
依赖项
~13–22MB
~381K SLoC