7 个不稳定版本 (3 个重大更新)

0.3.1 2024 年 8 月 20 日
0.3.0 2024 年 8 月 19 日
0.2.2 2024 年 2 月 17 日
0.1.1 2023 年 12 月 9 日
0.0.1-rc22023 年 12 月 9 日

#9 in #local-git

Download history 7/week @ 2024-07-03 65/week @ 2024-08-14

每月 65 次下载

MIT 许可证

210KB
1.5K SLoC

gw

监控本地 Git 仓库,与远程保持同步并运行命令。

动机

gw 是一个轻量级的二进制程序,可为您管理简单的基于拉取的持续部署。它监视本地 Git 仓库,如果远程发生更改则进行获取,并构建或部署您的代码。当前的 CD 解决方案要么将您锁定在专有软件中(例如 Netlify 或 Vercel),要么运行和管理复杂(例如 ArgoCD)。gw 是一种可以在任何地方运行的服务(即使在 NAT 或 VPN 后面),与您的远程代码同步并立即部署,节省您开发人员的时间和精力。

gw 的功能

  • 轻量级:它仅是一个 2.5MB 的二进制文件(包含内置的 git 和 ssh,大小为 ~7MB)
  • 可在任何地方运行:在裸金属、systemddocker 上使用
  • 开源:完全用 Rust 编写,您可以在几分钟内从源代码构建
  • 基于拉取:在任意网络上工作,即使在 NAT 或 VPN 后面
  • 灵活:构建、部署、重启或您能想到的任何操作

安装

要开始使用,请从 发布 下载 gw 二进制文件或使用 cargo 安装

cargo binstall gw-bin
# or
cargo install gw-bin

开始使用

gw 是一个简单的程序,您可以使用它从远程仓库拉取更改并在更改上运行脚本。

先决条件

首先,请确保已成功安装 gw 并将其添加到您的 PATH

$ gw --version
0.3.1

另一个必要部分是您具有拉取访问权限的 Git 仓库。建议使用您熟悉的仓库,但如果您手头没有,可以使用 daniel7grant/time 仓库。这是一个每分钟更新一次的示例仓库,因此它对于测试 gw 的自动更新很有用。首先克隆此仓库(如果您使用自己的,请重新克隆),然后进入克隆的目录

git clone https://github.com/daniel7grant/time.git
cd time

自动拉取文件

要开始使用,请将gw指向此本地仓库。默认情况下,它会每分钟拉取一次更改。我们可以添加--verbose-v标志以查看更改发生的时间

gw . -v

如果您正在使用自己的仓库,请在不同的地方创建一个提交,并查看它是如何自动拉取的(在time仓库的情况下,每分钟都有一个提交)。详细的日志应该会打印出git pull发生的信息

$ gw . -v
# ...
2024-03-10T14:48:13.447Z DEBUG [gw_bin::checks::git::repository] Checked out fc23d21 on branch main.
2024-03-10T14:48:13.447Z INFO  [gw_bin::start] There are updates, pulling.

还可以检查文件或使用git log来查看仓库是否已更新

cat DATETIME  # it should contain the latest time
git log -1  # it should be a commit in the last minute

在拉取时运行脚本

自动拉取文件很有用,但--script-s标志释放了gw的潜力:如果有任何更改,它可以运行任何类型的自定义脚本。例如,我们可以使用cat将文件内容打印到日志中

gw . -v --script 'cat DATETIME'

这将在每次有新的提交时运行,并在拉取后打印文件内容。您可以看到结果已打印到日志中

$ gw . -v --script 'cat DATETIME'
# ...
2024-03-10T15:04:37.740Z INFO  [gw_bin::start] There are updates, running scripts.
2024-03-10T15:04:37.740Z DEBUG [gw_bin::actions::script] Running script: cat DATETIME in directory /home/grant/Development/quick/time.
2024-03-10T15:04:37.742Z DEBUG [gw_bin::actions::script] Command success, output:
2024-03-10T15:04:37.742Z DEBUG [gw_bin::actions::script]   2024-03-10T15:04:01+0000

您可以添加多个脚本,它们将一个接一个地运行。使用这些脚本构建源文件、重启部署等。

下一步

如果您喜欢gw,有多种方法可以将其用于实际用例。

如果您想将gw脚本放在后台,您可以

  • 将其包装为systemd unit,如果您想用单个文件来管理它;
  • docker容器中启动,如果您已经在工作流程中使用Docker;
  • 或使用cron定期运行,如果您没有服务器的shell访问权限。

如果您对如何使用gw有一些想法

  • 如果您只需要拉取文件,请参阅PHP指南
  • 如果您使用编译型语言,请参阅编译型语言指南,例如重启进程;
  • 如果您想使用gwdocker-compose.yaml一起,请参阅docker-compose指南
  • 如果您想轻松地将配置文件作为GitOps管理,请参阅配置指南
  • 对于完整示例,请查看Netlify
  • 以及其他许多事物,对于不完整的列表,请参阅指南页面

依赖项

~10–19MB
~343K SLoC