80 lines
1.8 KiB
Markdown
80 lines
1.8 KiB
Markdown
# TJWater CLI
|
|
|
|
独立于服务端主代码的 Python CLI 文件夹,放在 `TJWaterServerBinary/cli/` 下,供 agent 服务器使用**编译后的可执行文件**直接调用,并通过 stdout/stderr 参与管道。
|
|
|
|
## 构建可执行产物
|
|
|
|
```bash
|
|
cd TJWaterServerBinary/cli
|
|
python -m pip install -r requirements.txt
|
|
python -m pip install -r requirements-build.txt
|
|
chmod +x build.sh
|
|
./build.sh
|
|
```
|
|
|
|
构建完成后,直接使用编译产物:
|
|
|
|
```bash
|
|
./dist/tjwater-cli/tjwater-cli help
|
|
```
|
|
|
|
这个可执行文件可以直接参与管道:
|
|
|
|
```bash
|
|
./dist/tjwater-cli/tjwater-cli help | jq
|
|
```
|
|
|
|
当前采用 `PyInstaller onedir` 方式输出到 `dist/tjwater-cli/`,避免 onefile 在部分 agent/server 环境下依赖临时目录解包执行的问题。
|
|
|
|
如果需要在开发时直接走源码入口,也可以显式使用 Python:
|
|
|
|
```bash
|
|
python -m tjwater_cli help
|
|
```
|
|
|
|
## 部署到 agent 服务器
|
|
|
|
最简单的方式是把 `dist/tjwater-cli/` 整个目录同步到 agent 服务器,然后直接执行:
|
|
|
|
```bash
|
|
./tjwater-cli/tjwater-cli help
|
|
```
|
|
|
|
如果希望打包传输:
|
|
|
|
```bash
|
|
cd TJWaterServerBinary/cli
|
|
tar -C dist -czf tjwater-cli-linux-amd64.tar.gz tjwater-cli
|
|
```
|
|
|
|
如果希望放到 PATH 中:
|
|
|
|
```bash
|
|
ln -s /path/to/TJWaterServerBinary/cli/dist/tjwater-cli/tjwater-cli /usr/local/bin/tjwater-cli
|
|
tjwater-cli help | jq
|
|
```
|
|
|
|
## 运行与构建依赖
|
|
|
|
```bash
|
|
cd TJWaterServerBinary/cli
|
|
python -m pip install -r requirements.txt
|
|
python -m pip install -r requirements-build.txt
|
|
```
|
|
|
|
`requirements.txt` 仅包含运行 CLI 的依赖;`requirements-build.txt` 仅包含生成可执行文件所需的构建依赖。
|
|
|
|
## 认证上下文
|
|
|
|
CLI 通过 `--auth-context` 读取 JSON 文件。常用字段:
|
|
|
|
```json
|
|
{
|
|
"server": "http://backend-host:8000",
|
|
"access_token": "...",
|
|
"project_id": "...",
|
|
"network": "...",
|
|
"username": "..."
|
|
}
|
|
```
|