feat(release): publish standalone repository and Docker Hub images

This commit is contained in:
ji ruo committed 2026-10-09 09:01:25 +08:00
1 parent 714b00cccb
commit dfef372b64
8 files changed
+149 -42

No files matched your search

+35 -9
View File
@@ -9,6 +9,8 @@ AI 自主渗透测试系统(Go 后端 + Next.js 前端)
</div>
本仓库为独立维护的 [RuoJi6/ARTEX](https://github.com/RuoJi6/ARTEX),保留 ARTEX 的原始提交历史与 AGPL-3.0 许可证。程序发布包从本仓库 Releases 下载,Docker 镜像 [ruoji6/artex](https://hub.docker.com/r/ruoji6/artex) 由本仓库 GitHub Actions 构建并发布。
---
## 截图预览
@@ -69,7 +71,7 @@ AI 自主渗透测试系统(Go 后端 + Next.js 前端)
### 方式一:一键安装脚本(推荐)
```bash
git clone https://github.com/Autumn-27/ARTEX.git
git clone https://github.com/RuoJi6/ARTEX.git
cd ARTEX
./install.sh
```
@@ -84,15 +86,17 @@ cd ARTEX
### 方式二:Docker Compose(手动)
```bash
git clone https://github.com/Autumn-27/ARTEX.git
git clone https://github.com/RuoJi6/ARTEX.git
cd ARTEX
cp .env.example .env # 填 POSTGRES_PASSWORD、可选 ANTHROPIC_API_KEY
docker compose up -d # 拉取 autumn27/artex 镜像 + postgres
docker compose up -d # 拉取 ruoji6/artex 镜像 + postgres
# → http://localhost:8787
```
镜像已含常用工具(ripgrep/curl/vim/npm/nmap…);`./skills` 与 `./data` 以绑定挂载持久化。
`.env` 中默认 `ARTEX_IMAGE=ruoji6/artex`,`ARTEX_TAG=latest` 使用最新镜像,也可固定为 `v0.3.17`(完整镜像地址 `ruoji6/artex:v0.3.17`)。镜像支持 `linux/amd64` 和 `linux/arm64`,Docker 会自动选择与宿主机匹配的架构,ARM64 Kali 无需自行编译。初次部署请修改 `POSTGRES_PASSWORD`;运行服务无需配置 Docker Hub 发布 Token。
远程 MCP 可在系统设置中选择 `http`(Streamable HTTP)或 `sse`(旧版 SSE)。
旧版 SSE 服务通常使用 `GET /sse` 建立事件流,再通过服务返回的
`/message?sessionId=...` 接收 JSON-RPC 请求;配置时将 URL 填为 `/sse`,请求头按
@@ -161,17 +165,39 @@ ARTEX_TARGETS=linux/amd64,windows/amd64 ./build.sh --release
### 维护者:通过 GitHub Actions 发布在线更新
发布工作流为 `.github/workflows/release.yml`。推送正式标签会触发构建,也可在 Actions → release → Run workflow 中输入已存在的标签重新执行失败的发布。标签必须是 `v主版本.次版本.修订号`,例如下例的 `v0.3.16`;后续版本必须高于用户正在运行的版本。
发布工作流为 `.github/workflows/release.yml`。推送正式标签会触发构建,也可在 Actions → release → Run workflow 中输入已存在的标签重新执行失败的发布。标签必须是 `v主版本.次版本.修订号`,例如下例的 `v0.3.17`;后续版本必须高于用户正在运行的版本。
```bash
git push origin main
git tag v0.3.16
git push origin v0.3.16
git tag v0.3.17
git push origin v0.3.17
```
工作流固定标签对应的提交,用 Node.js 22 导出前端,按照 `go.mod` 指定的 Go 版本编译内嵌前端的五个平台程序,并生成 ZIP 与 `SHA256SUMS`。全部发布包准备好后先上传到草稿 Release,上传成功才公开为最新正式版,避免页面检查到尚未上传完整的版本。已公开的同版本不允许覆盖,应发布新标签。
工作流固定标签对应的提交,用 Node.js 22 导出前端,按照 `go.mod` 指定的 Go 版本编译内嵌前端的五个平台程序,并生成 ZIP 与 `SHA256SUMS`。AMD64 和 ARM64 镜像分别在 GitHub 原生 runner 上构建,连接临时 PostgreSQL 验证程序启动、版本和内嵌前端;两种架构都通过后发布多架构镜像的版本标签与 `latest`。镜像发布成功后上传完整 ZIP 和校验文件,最后公开 Release。已公开的同版本不允许覆盖,应发布新标签。
页面在线更新所需的发布只使用仓库自带 `GITHUB_TOKEN`,无需 Docker Hub 凭据。Docker 镜像任务默认跳过;如需单独发布自己的镜像,设置仓库 Actions 变量 `ARTEX_DOCKER_IMAGE`(自己的 Docker Hub 镜像名)及 Secrets `DOCKERHUB_USERNAME`、`DOCKERHUB_TOKEN`。现有 Compose 文件仍指向原镜像,使用自有镜像时应自行修改镜像地址。
维护者需在本仓库 Settings → Secrets and variables → Actions 中配置变量 `ARTEX_DOCKER_IMAGE`(Docker Hub 用户名/镜像名)和 Secrets `DOCKERHUB_USERNAME`、`DOCKERHUB_TOKEN`(有镜像推送权限)。程序包通过 GitHub 自带 `GITHUB_TOKEN` 上传,镜像通过上述凭据推送到 Docker Hub。凭据只供工作流登录使用,不写入源码或镜像。镜像地址同时记录在 `.env.example` 和 Compose 默认值中。
### 已有 Docker 部署迁移到本仓库镜像
在原部署目录中备份 `.env`、Compose 文件、`data/` 和 PostgreSQL 数据,保留原数据库卷和 skills 挂载。将 `.env` 的 `ARTEX_IMAGE` 设置为本仓库镜像地址、`ARTEX_TAG` 设置为目标版本;如果旧 Compose 仍写死原作者的镜像,可创建下列覆盖文件(已有覆盖文件时应合并 image 配置):
```yaml
# docker-compose.override.yml
services:
artex:
image: ${ARTEX_IMAGE}:${ARTEX_TAG:-latest}
```
然后只更新应用容器:
```bash
docker compose pull artex
docker compose up -d --no-deps artex
curl --fail http://127.0.0.1:8787/api/health
docker compose logs --tail=50 artex
```
继续使用原部署目录和 Compose 项目名称,确保 `./data`、`./skills` 和 PostgreSQL 数据卷仍指向原数据。迁移后程序从 `RuoJi6/ARTEX` 检查在线更新;后续可用页面更新程序或上述命令更新整个镜像。
首次迁移已有 Docker 部署时,将已校验的新 ARM64 ZIP 解压到宿主机,备份原程序,然后只替换已有容器中的 `/app/artex`。例如现有容器名为 `artex-artex-1`:
@@ -205,7 +231,7 @@ cd ARTEX
```bash
cd ARTEX
git pull # 更新 compose / 脚本(可选)
# 指定版本:在 .env 设 ARTEX_TAG=v0.2.0;不设则用 latest
# 指定版本:在 .env 设 ARTEX_TAG=v0.3.17;不设则用 latest
docker compose pull artex
docker compose up -d artex # 换新镜像重启 → 自动迁移 schema
docker image prune -f # 清理旧镜像(可选)