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-rc2 | 2023 年 12 月 9 日 |
#9 in #local-git
每月 65 次下载
210KB
1.5K SLoC
gw
监控本地 Git 仓库,与远程保持同步并运行命令。
动机
gw
是一个轻量级的二进制程序,可为您管理简单的基于拉取的持续部署。它监视本地 Git 仓库,如果远程发生更改则进行获取,并构建或部署您的代码。当前的 CD 解决方案要么将您锁定在专有软件中(例如 Netlify 或 Vercel),要么运行和管理复杂(例如 ArgoCD)。gw
是一种可以在任何地方运行的服务(即使在 NAT 或 VPN 后面),与您的远程代码同步并立即部署,节省您开发人员的时间和精力。
gw
的功能
- 轻量级:它仅是一个 2.5MB 的二进制文件(包含内置的 git 和 ssh,大小为 ~7MB)
- 可在任何地方运行:在裸金属、systemd 或 docker 上使用
- 开源:完全用 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
有一些想法
依赖项
~10–19MB
~343K SLoC