47 个版本 (8 个破坏性更新)
0.9.6 | 2019 年 8 月 16 日 |
---|---|
0.8.5 | 2019 年 8 月 9 日 |
0.6.5 | 2019 年 7 月 30 日 |
#298 in 测试
每月 292 次下载
790KB
2K SLoC
rusty-ci
从 YAML 文件生成 buildbot 项目的工具
描述
Rusty-CI 设计为一个简单的持续集成工具,设置起来非常快捷。阅读这份 README 的时间不到 10 分钟,你就可以让 Rusty-CI 对你的仓库进行测试了!
它通过从描述项目测试方式的 YAML 文件中构建一个 web 服务器和几个工作进程来工作。当 Rusty-CI 检测到你的仓库中的更改时,它将使用你的 YAML 文件中的数据来确定如何测试该分支。然后,它将向你的版本控制系统推送状态报告。
特性
- 用于详细测试输出和 CI 配置的 Web 界面
- 检测 GitHub 和 GitLab 上的合并/拉取请求
- 使用正则表达式在特定分支上触发特定文件更改的测试
- 相互依赖的测试
- 自定义测试脚本
- 可定制的电子邮件机器人设置
文档
$ rusty-ci
rusty_ci x.x.x
Adam McDaniel <[email protected]>
A continuous integration tool written in Rust
USAGE:
rusty-ci [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
build Build rusty-ci from YAML file(s)
help Prints this message or the help of the given subcommand(s)
install Install buildbot
rebuild Build and restart rusty-ci from input YAML file(s)
setup Output a template YAML files for you to change to customize
start Launch rusty-ci from an input YAML file
stop Stop rusty-ci
To start a project, run the `setup` subcommand.
Be sure to follow the instructions after each subcommand very carefully!
示例
此示例 Rusty-CI 输入 YAML 测试以所有以 feature/
开头且包含以 .rs
、.yaml
或 .sh
结尾的文件更改的分支和拉取请求。它只会测试来自 adam-mcdaniel
或由 adam-mcdaniel
评论并包含短语 ok to test
授权的拉取请求。这些短语可以针对每个测试单独使用;因此,不同的短语可以授权不同的测试。
requires: 0.9.0
master:
title: "Rusty-CI"
title-url: "https://github.com/adam-mcdaniel/rusty-ci"
webserver-ip: localhost
webserver-port: 8010
repo: "https://github.com/adam-mcdaniel/rusty-ci"
poll-interval: 120
merge-request-handler:
version-control-system: github
owner: adam-mcdaniel
repo-name: rusty-ci
whitelist:
- adam-mcdaniel
workers:
test-worker:
master-ip: localhost
working-dir: 'test-worker'
schedulers:
ci-change:
builders:
- rusty-ci-test
branch: "feature/.*"
triggers:
- '.*\.rs'
- '.*\.yaml'
- '.*\.sh'
password: "ok to test"
builders:
rusty-ci-test:
script:
- echo Hello world!
- echo Im an instruction in a script!
workers:
- test-worker
repo: "https://github.com/adam-mcdaniel/rusty-ci"
安装
安装 rust。
curl https://sh.rustup.rs -sSf | sh
安装 rusty-ci
cargo install rusty-ci
安装 python3、pip 和 venv
sudo apt update
sudo apt upgrade
sudo apt install python3-dev python3-pip python3-venv
使用方法
首先,运行 rusty-ci setup
,并仔细阅读并遵循输出指令。
建议
我强烈建议在Linux容器中使用它,以避免污染你的操作系统环境。如果你决定使用Linux容器,请在做任何事情之前确保执行以下命令:apt update && apt upgrade
,以及apt install build-essential
!
总结
只需将以下内容粘贴到你的终端中即可安装和设置(我假设你正在使用基于Debian的操作系统)。
# Update && Upgrade
apt update -y && apt upgrade -y
apt install -y build-essential python3-dev python3-pip python3-venv
# Install rust
curl https://sh.rustup.rs -sSf | sh # Run the rust installer
source $HOME/.cargo/env # Add `cargo` to your path
cargo install -f rusty-ci # Install the latest rusty-ci release
# Write template yaml files
rusty-ci setup template.yaml mail.yaml
# Uncomment to modify your CI's settings to fit your project
# nano template.yaml # Controls how your CI tests your code
# nano mail.yaml # Defines email update / notification settings
# Install rusty-ci dependencies
rusty-ci install -q # Build install.sh
chmod +x ./install.sh # Make install.sh executable
./install.sh # Install!
# Enter venv
. venv/bin/activate # Enter the venv created by rusty-ci
# to avoid poisoning your environment
# Add an authentication token from your VCS (github)
echo "YOUR AUTH TOKEN HERE" > auth.token
# Construct your ci bot
rusty-ci build -q template.yaml --mail mail.yaml
# Spin up the workers!
rusty-ci start template.yaml -q
# All done!
问题
- 目前,使用
cargo tarpaulin --exclude-files src/bin.rs
命令显示,我们只测试了27.53%的代码。需要更多的测试,以及针对这些测试的更多案例。 - 据我所知,文档与Rusty-CI当前版本不匹配。我已经尽力使其版本无关,但当然,自上次我记录Rusty-CI以来,已经添加和修复了几个功能和错误。
- 需要更多的稳定性和安全性。我认为这些方面只能通过使用Rusty-CI并注意其怪癖来改进。
许可证
Rusty-CI是在Apache许可证(版本2.0)的条款下分发的。
有关详细信息,请参阅LICENSE。
依赖关系
~1.1–1.9MB
~32K SLoC