#build-system #install #merge-request

bin+lib rusty-ci

从 YAML 文件生成 buildbot 项目的工具

47 个版本 (8 个破坏性更新)

0.9.6 2019 年 8 月 16 日
0.8.5 2019 年 8 月 9 日
0.6.5 2019 年 7 月 30 日

#298 in 测试

Download history 84/week @ 2023-10-28 10/week @ 2023-11-04 50/week @ 2023-11-11 4/week @ 2023-11-18 101/week @ 2023-11-25 146/week @ 2023-12-02 1/week @ 2023-12-09 48/week @ 2023-12-16 96/week @ 2023-12-23 47/week @ 2023-12-30 48/week @ 2024-01-20 96/week @ 2024-01-27 148/week @ 2024-02-10

每月 292 次下载

Apache-2.0

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