# CI环境Docker镜像
# 严格遵循SPEC CI容器化测试铁律

FROM rust:1.82-slim-bookworm as builder

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    pkg-config \
    libssl-dev \
    curl \
    build-essential \
    git \
    && rm -rf /var/lib/apt/lists/*

# 创建应用目录
WORKDIR /app

# 复制依赖文件
COPY Cargo.toml Cargo.lock ./

# 创建src目录并放入一个占位文件，以便Cargo可以下载依赖
RUN mkdir src && echo "fn main() {}" > src/main.rs

# 构建缓存依赖（为了加快后续构建）
RUN cargo fetch

# 复制源代码
COPY src ./src

# 删除占位main.rs并重新复制真实的main.rs
RUN rm -f src/main.rs
COPY src ./src

# 构建应用
RUN cargo build --release

# 运行时镜像
FROM debian:bookworm-slim

# 安装运行时依赖
RUN apt-get update && apt-get install -y \
    ca-certificates \
    libssl3 \
    curl \
    && rm -rf /var/lib/apt/lists/*

# 创建非root用户
RUN groupadd -r aiw && useradd -r -g aiw aiw

# 创建应用目录
WORKDIR /app

# 从builder阶段复制二进制文件
COPY --from=builder /app/target/release/aiw /usr/local/bin/aiw

# 复制测试脚本和配置
COPY tests ./tests
COPY scripts ./scripts

# 创建日志目录
RUN mkdir -p /app/test-results /app/logs && chown -R aiw:aiw /app

# 切换到非root用户
USER aiw

# 验证安装
RUN aiw --version

# 设置环境变量
ENV RUST_LOG=info
ENV AIW_ENV=ci

# 默认命令
CMD ["/usr/local/bin/aiw", "--help"]
