Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dd9cb92

Browse files
committed
fix: add release preflight for cli
1 parent 3e01a22 commit dd9cb92

10 files changed

Lines changed: 98 additions & 10 deletions

File tree

.dockerignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!Dockerfile
3+
!src-tauri/
4+
!src-tauri/**
5+
src-tauri/target/

.github/workflows/release.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,16 @@ permissions:
99
contents: write
1010

1111
jobs:
12+
preflight:
13+
runs-on: ubuntu-22.04
14+
steps:
15+
- uses: actions/checkout@v5
16+
17+
- name: Docker preflight
18+
run: bash scripts/release-preflight.sh
19+
1220
build:
21+
needs: preflight
1322
strategy:
1423
fail-fast: false
1524
matrix:

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [0.8.2] - 2026-05-19
6+
7+
### Fixes / 修复
8+
9+
- 修复 `agentgate-serve` 未适配网关启动返回值导致 CLI 多平台构建失败的问题
10+
- 修复 Docker/默认 CLI 启动未读取 `AGENTGATE_HOST``AGENTGATE_PORT` 的问题
11+
12+
### CI / 发布
13+
14+
- 新增 Docker release preflight,发版前构建并启动 `agentgate-serve`,检查 `/health`
15+
- 修复 Dockerfile 的 Rust 版本、Linux/Tauri 依赖和构建上下文体积问题
16+
17+
---
18+
519
## [0.8.1] - 2026-05-19
620

721
### Fixes / 修复

Dockerfile

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,42 @@
11
# Build stage
2-
FROM rust:1.82-slim AS builder
2+
FROM rust:1-bookworm AS builder
33

44
WORKDIR /build
55

66
# Install build dependencies
7-
RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/*
7+
RUN apt-get update && apt-get install -y \
8+
pkg-config \
9+
libssl-dev \
10+
libwebkit2gtk-4.1-dev \
11+
libappindicator3-dev \
12+
librsvg2-dev \
13+
patchelf \
14+
&& rm -rf /var/lib/apt/lists/*
815

916
# Copy source
1017
COPY src-tauri/ ./
1118

19+
# The desktop app build keeps Cargo autobins disabled so Tauri does not bundle
20+
# the headless CLI. Enable the CLI binary only inside the Docker build.
21+
RUN cat >> Cargo.toml <<'EOF'
22+
23+
[[bin]]
24+
name = "agentgate-serve"
25+
path = "src/cli/serve.rs"
26+
EOF
27+
1228
# Build only the headless binary
1329
RUN cargo build --release --bin agentgate-serve
1430

1531
# Runtime stage
1632
FROM debian:bookworm-slim
1733

18-
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
34+
RUN apt-get update && apt-get install -y \
35+
ca-certificates \
36+
libwebkit2gtk-4.1-0 \
37+
libappindicator3-1 \
38+
librsvg2-2 \
39+
&& rm -rf /var/lib/apt/lists/*
1940

2041
COPY --from=builder /build/target/release/agentgate-serve /usr/local/bin/agentgate-serve
2142

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
{
22
"name": "agentgate",
33
"private": true,
4-
"version": "0.8.1",
4+
"version": "0.8.2",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",
88
"build": "tsc && vite build",
99
"preview": "vite preview",
10+
"release:preflight": "bash scripts/release-preflight.sh",
1011
"tauri": "tauri"
1112
},
1213
"dependencies": {

scripts/release-preflight.sh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
image_name="${AGENTGATE_PREFLIGHT_IMAGE:-agentgate-preflight}"
5+
container_name="${AGENTGATE_PREFLIGHT_CONTAINER:-agentgate-preflight}"
6+
host_port="${AGENTGATE_PREFLIGHT_PORT:-19090}"
7+
8+
cleanup() {
9+
docker rm -f "$container_name" >/dev/null 2>&1 || true
10+
}
11+
12+
trap cleanup EXIT
13+
14+
docker build -t "$image_name" .
15+
16+
cleanup
17+
docker run -d \
18+
--name "$container_name" \
19+
-p "127.0.0.1:${host_port}:9090" \
20+
"$image_name" >/dev/null
21+
22+
for _ in $(seq 1 30); do
23+
if curl -fsS "http://127.0.0.1:${host_port}/health" >/dev/null; then
24+
echo "Docker preflight passed: agentgate-serve is running."
25+
exit 0
26+
fi
27+
sleep 1
28+
done
29+
30+
docker logs "$container_name" >&2 || true
31+
echo "Docker preflight failed: health endpoint did not become ready." >&2
32+
exit 1

src-tauri/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "agentgate"
3-
version = "0.8.1"
3+
version = "0.8.2"
44
description = "Local gateway for AI coding agents"
55
authors = ["dengmengmian"]
66
edition = "2021"

src-tauri/src/cli/serve.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,12 @@ async fn main() {
131131
Some(Commands::Status) => cmd_status(&cli),
132132
None => {
133133
// Default: serve
134-
cmd_serve(&cli, "127.0.0.1", 9090).await;
134+
let host = std::env::var("AGENTGATE_HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
135+
let port = std::env::var("AGENTGATE_PORT")
136+
.ok()
137+
.and_then(|value| value.parse::<u16>().ok())
138+
.unwrap_or(9090);
139+
cmd_serve(&cli, &host, port).await;
135140
}
136141
}
137142
}
@@ -156,13 +161,14 @@ async fn cmd_serve(cli: &Cli, host: &str, port: u16) {
156161
eprintln!();
157162

158163
match agentgate_lib::gateway::server::start(host, port, db).await {
159-
Ok((_shutdown_tx, handle)) => {
164+
Ok((shutdown_tx, handle, _active_requests)) => {
160165
eprintln!("Gateway running on http://{host}:{port}");
161166
eprintln!("Press Ctrl+C to stop.");
162167
eprintln!();
163168
tokio::signal::ctrl_c().await.ok();
164169
eprintln!("\nShutting down...");
165-
drop(handle);
170+
let _ = shutdown_tx.send(());
171+
let _ = handle.await;
166172
}
167173
Err(e) => {
168174
eprintln!("Failed to start: {}", e.message);

src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "AgentGate",
4-
"version": "0.8.1",
4+
"version": "0.8.2",
55
"identifier": "com.mengmian.agentgate",
66
"build": {
77
"beforeDevCommand": "pnpm dev",

0 commit comments

Comments
 (0)