4 个版本 (2 个破坏性版本)
0.2.1 | 2020年10月14日 |
---|---|
0.2.0 | 2020年9月24日 |
0.1.2 | 2020年7月20日 |
0.0.1 | 2020年7月2日 |
#836 in HTTP服务器
47KB
1K SLoC
Subilo
🛳 自动部署代理
Subilo 是一个用于设置在没有外部集成(如物联网设备和VPS)的机器上运行的应用程序持续部署的工具。
工作原理
Subilo 代理是一个小型服务器,位于您的应用程序机器上,并监听安全的HTTP webhook。这些webhook包含有关要部署的应用程序的信息,这些信息与Subilo配置文件(.subilorc
)匹配。文件还定义了成功部署应用程序应采取的步骤,例如:git pull
或拉取最新的Docker镜像,重启应用程序并发送通知。
基本示例
配置 (.subilorc
)
[[projects]]
name = "foo-app"
path = "~/apps/foo-app"
commands = [
"git pull",
"./restart-serever.sh",
"echo 'Pulled changes and restarted server successfully'",
]
Webhook:
这个webhook通常在测试通过后从CI运行中发送。
curl -X POST 'https://subilo.yourdomain.com/webhook' \
-H 'Authorization: Bearer ********' \
-H 'Content-Type: application/json' \
-d '{ "name": "foo-app" }'
然后可以在使用Subilo代理提供的URL和身份验证令牌的仪表板中查看这些部署的状态和日志。
安装
安装脚本
curl -s -L https://raw.githubusercontent.com/huemul/subilo/master/install.sh | bash
此命令运行安装脚本。该脚本下载最新的Subilo版本,并尝试将Subilo二进制路径添加到正确的配置文件中(~/.profile
、~/.bashrc
、~/.bash_profile
、~/.zshrc
或 ~/.config/fish/config.fish
)
Cargo
cargo install subilo
手动
下载最新的发布二进制文件并添加可执行权限
wget -O subilo "https://github.com/huemul/subilo/releases/download/v0.1.2/subilo-x86-64-linux"
chmod +x subilo
使用
命令行界面
现在Subilo可用后,可以通过运行help
子命令来显示CLI信息。
subilo --help
subilo 0.0.1
Tiny deployment agent
USAGE:
subilo [FLAGS] [OPTIONS] <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
-v, --verbose Makes Subilo verbose. Useful for debugging and seeing what's going on "under the hood"
OPTIONS:
-s, --secret <secret> Secret to generate and authenticate the token
SUBCOMMANDS:
help Prints this message or the help of the given subcommand(s)
serve Start subilo agent
token Create a token based on the secret to authorize agent connections
配置
创建一个包含所需配置的.subilorc
文件。一个示例可以在这里找到。
启动
要启动代理,应使用serve
命令,指定认证密钥、端口(可选)、配置文件和日志目录(可选)。
示例
subilo --secret super-secret serve --port 8089 --config /path/to/.subilorc
注意:目前,显示部署作业状态和日志的API基于这些日志文件。
认证
要访问代理端点,请在CLI中使用token
命令创建认证令牌。
具有写入权限的令牌
此令牌用于访问POST /webhook
端点,并使用.subilorc
中的预定义命令部署应用程序。
示例
subilo --secret "super-secret" token --permissions "job:write"
仅具有读取权限的令牌
默认情况下,该令牌仅具有读取权限。换句话说,只能访问日志和信息端点。这些端点可以用来查看部署作业的状态和日志。它们是subilo.io网站的动力所在。
示例
subilo --secret "super-secret" token
Systemd配置(可选)
我们建议使用systemd运行Subilo以轻松管理。但这完全可选,您可以根据需要运行它。
创建具有以下属性的systemd服务文件(/etc/systemd/system/subilo.service
)
[Unit]
Description=Subilo
[Service]
ExecStart=/path/to/subilo -s super-secret-secret serve -l /path/to/subilo-logs -p 8080 -c /path/to/.subilorc
[Install]
WantedBy=multi-user.target
然后启用并启动Subilo服务
# Might require sudo
systemctl enable /etc/systemd/system/subilo.service
systemctl start subilo
要从systemctl读取日志并检查状态,可以使用以下命令
systemctl status subilo
journalctl -u subilo -b
设置部署webhook
一旦Subilo运行并暴露在互联网上,可以通过向/webhook
端点发送包含应用程序名称的POST请求来触发部署作业。
curl -X POST 'https://subilo.yourdomain.com/webhook' \
-H 'Authorization: Bearer ********' \
-H 'Content-Type: application/json' \
-d '{ "name": "foo-app" }'
该名称将与.subilorc
配置文件进行匹配,并运行指定的命令来部署应用程序。
CI
通常,此webhook由CI运行触发,因此当应用程序的测试通过后,可以安全部署。将令牌作为秘密存储在CI配置中,并添加curl命令以POST到/webhook
端点来触发部署。
开发
运行
cargo run
# Watch mode
cargo watch -x run
# Setting CLI options
cargo run -- --port 9090 --logs-dir ./logs
测试
cargo test
# Watch mode
cargo watch -x test
许可
依赖项
~66MB
~1.5M SLoC