forked from PuqiAR/Fig-TreeWalker
[CI] 不要相信 ds 的话
This commit is contained in:
@@ -1,52 +1,35 @@
|
|||||||
# 第一阶段:构建基础环境
|
FROM ubuntu:24.04
|
||||||
FROM ubuntu:24.04 AS builder-base
|
|
||||||
|
|
||||||
|
# 1. 设置镜像源(可选,用于加速)
|
||||||
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
|
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
|
||||||
sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
|
sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
|
||||||
|
|
||||||
|
# 2. 一次性安装所有依赖(工具链、库、CI工具)
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
wget gnupg ca-certificates \
|
wget gnupg ca-certificates \
|
||||||
clang-19 lld-19 libc++-19-dev libc++abi-19-dev \
|
clang-19 lld-19 libc++-19-dev libc++abi-19-dev \
|
||||||
mingw-w64 g++-mingw-w64 \
|
mingw-w64 g++-mingw-w64 \
|
||||||
tar git curl \
|
git tar curl \
|
||||||
&& rm -rf /var/lib/apt/lists/* && \
|
&& rm -rf /var/lib/apt/lists/* && \
|
||||||
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 100 && \
|
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 100 && \
|
||||||
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 100 && \
|
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 100 && \
|
||||||
ln -sf /usr/bin/ld.lld-19 /usr/bin/ld.lld
|
ln -sf /usr/bin/ld.lld-19 /usr/bin/ld.lld
|
||||||
|
|
||||||
|
# 3. 安装xmake
|
||||||
RUN wget -O /usr/local/bin/xmake \
|
RUN wget -O /usr/local/bin/xmake \
|
||||||
https://git.fig-lang.cn/PuqiAR/xmake-binary-copy/raw/commit/989d1f2dabb0bc8d5981a5f900c2cf7c2ac78ee4/xmake-bundle-v3.0.5.linux.x86_64 && \
|
https://git.fig-lang.cn/PuqiAR/xmake-binary-copy/raw/commit/989d1f2dabb0bc8d5981a5f900c2cf7c2ac78ee4/xmake-bundle-v3.0.5.linux.x86_64 && \
|
||||||
chmod +x /usr/local/bin/xmake
|
chmod +x /usr/local/bin/xmake
|
||||||
|
|
||||||
# 第二阶段:创建最终镜像
|
# 4. 创建非root用户
|
||||||
FROM ubuntu:24.04
|
|
||||||
|
|
||||||
# 安装CI运行时工具
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
git tar curl ca-certificates \
|
|
||||||
# 关键:安装clang运行时库,解决 libclang-cpp.so.19.1 依赖
|
|
||||||
libclang-rt-19-dev \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# 复制编译器、xmake和库文件
|
|
||||||
COPY --from=builder-base /usr/local/bin/xmake /usr/local/bin/xmake
|
|
||||||
COPY --from=builder-base /usr/bin/clang++ /usr/bin/clang++
|
|
||||||
COPY --from=builder-base /usr/bin/clang /usr/bin/clang
|
|
||||||
COPY --from=builder-base /usr/bin/ld.lld /usr/bin/ld.lld
|
|
||||||
COPY --from=builder-base /usr/x86_64-w64-mingw32 /usr/x86_64-w64-mingw32
|
|
||||||
# 关键:复制完整的LLVM库目录,而不仅仅是/usr/lib/llvm-19
|
|
||||||
COPY --from=builder-base /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu
|
|
||||||
|
|
||||||
# 设置非root用户
|
|
||||||
RUN useradd -m -s /bin/bash builder
|
RUN useradd -m -s /bin/bash builder
|
||||||
|
|
||||||
USER builder
|
USER builder
|
||||||
WORKDIR /home/builder
|
WORKDIR /home/builder
|
||||||
|
|
||||||
# 验证环境
|
# 5. 验证环境
|
||||||
RUN xmake --version | head -1 && \
|
RUN xmake --version | head -1 && \
|
||||||
clang++ --version | head -1 && \
|
clang++ --version | head -1 && \
|
||||||
git --version && \
|
git --version && \
|
||||||
echo "✅ CI环境就绪"
|
ls /usr/include/c++/v1/cerrno >/dev/null 2>&1 && echo "✅ 标准库头文件存在" && \
|
||||||
|
ls /usr/x86_64-w64-mingw32/include/cerrno >/dev/null 2>&1 && echo "✅ MinGW头文件存在" && \
|
||||||
|
echo "环境就绪"
|
||||||
Reference in New Issue
Block a user