2 个版本

使用旧的 Rust 2015

0.1.1 2016 年 4 月 11 日
0.1.0 2016 年 3 月 20 日

#14 in #github-webhook

MIT 许可证

34KB
783 代码行,不包括注释

koukku

GitHub Webhook 服务器。监听来自 GitHub 的项目更新,并对更改执行更新脚本。

我可以使用 koukku 做什么?

此项目的主要目标是提供一个简单的持续集成/持续交付平台,用于 GitHub 项目。例如,可以使用 koukku 部署托管在 GitHub 上的源代码的网站最新版本。

它具体做什么?

  1. Koukku 通过提供 webhook 访问来监听来自 GitHub 的更新。
  2. 如果配置中找到匹配项,则触发接收事件的更新。
  3. 它使用远程存储库的更改更新匹配项目的本地存储库。
  4. 它在本地存储库目录中运行用户配置的更新脚本。

安装

您可以使用 RustCargo 安装 koukku。

$ cargo install koukku

用法

USAGE:
        koukku [FLAGS] --config <FILE>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --config <FILE>         Configuration file location

配置

配置遵循 INI 格式。顶级键包含常见配置,而部分包含特定于项目的配置。以下是一个配置示例

location = /path/to/projects
gitpath = /usr/bin/git
server = 0.0.0.0:3000
threads = 2

[myproject]
repo = githubname/myrepo
key = foobar
branch = master
command = /path/to/somescript.sh

项目布局

项目存储库应放置到 location 指向的位置。此目录中的存储库使用部分 ID 进行标识。例如,在上面的配置示例中,项目可通过 /path/to/projects/myproject 找到。

常见配置

描述
server 要运行的服务器地址。默认:localhost:8888
threads 运行 Web 服务器要使用的线程数。默认:与核心数相关
location 存储库所在的目录
gitpath git 二进制文件的路径。默认:/usr/bin/git

项目配置

描述
repo 格式为 username/repository 的 GitHub 存储库
key Webhook 秘密密钥
branch 要跟踪的 Git 分支。默认:master
command 在 webhook 触发时运行的命令

在 GitHub 中创建 webhook

请参阅 GitHub 的 创建 Webhook 指南。目前,koukku 只支持 JSON 负载。

日志记录

Koukku 使用 Rust 的 logenv_logger 进行日志记录。更改 RUST_LOG 环境变量以调整日志记录。推荐设置

RUST_LOG="error,koukku=info"

systemd

以下是一个使用 systemd 运行 koukku 的示例单元文件

[Unit]
Description=Github Webhook service
After=network.target

[Service]
ExecStart=/path/to/koukku --config /path/to/conf.ini
WorkingDirectory=/path/to/workingdir
User=koukku
Group=koukku
PIDFile=/path/to/koukku.pid
Environment=RUST_LOG=error,koukku=info

[Install]
WantedBy=default.target

根据需要更改路径、用户和组,并将文件放置于/etc/systemd/system/koukku.service。有关更多信息,请参阅systemd 文档

依赖项

要运行koukku,您需要安装OpenSSL库。有关更多信息,请参阅rust-openssl和您操作系统的指南。

要构建koukku,您需要安装Rust编译器和工具。

构建

使用Rust的cargo来构建项目

$ cargo build

构建将在路径target/debug/koukku中创建一个调试可执行文件。您可以使用--release标志创建一个优化后的可执行文件。

$ cargo build --release

可执行文件可以在路径target/release/koukku中找到。您也可以直接使用cargo run来运行可执行文件。

$ cargo run -- --config myconf.ini --server localhost:3030

可以使用cargo test运行测试

$ cargo test

有关使用Cargo的更多信息,请参阅Cargo指南

许可协议

(MIT许可协议)

版权所有(c)2016 Jaakko Pallari

在此特此免费授予任何人获得此软件和相关文档文件(以下简称“软件”)副本的权利,可以在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许获得软件的人进行上述行为,但以下条件除外

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权或其他原因,是否因软件或其使用或其他方式而产生。

依赖项

~14MB
~298K SLoC