hvisor ci test优化进展记录
hvisor ci test优化
目前进展(7.17)
1.根据ci.yml编写dockerfile
# 使用 Ubuntu 作为基础镜像
FROM ubuntu:22.04
# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive
# 更新系统并安装必要的依赖
RUN apt-get update && apt-get install -y \
build-essential \
qemu-system-aarch64 \
qemu-system-riscv64 \
gdb-multiarch \
llvm-dev \
libclang-dev \
wget \
u-boot-tools \
expect \
device-tree-compiler \
p7zip-full \
curl \
&& rm -rf /var/lib/apt/lists/*
# 设置 Rust 镜像源
ENV RUSTUP_DIST_SERVER="https://mirrors.ustc.edu.cn/rust-static"
ENV RUSTUP_UPDATE_ROOT="https://mirrors.ustc.edu.cn/rust-static/rustup"
# 安装 Rust
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
# 设置 PATH
ENV PATH="/root/.cargo/bin:${PATH}"
# 配置 cargo 使用国内镜像源
RUN mkdir -p /root/.cargo && \
echo '[source.crates-io]' > /root/.cargo/config && \
echo 'replace-with = "ustc"' >> /root/.cargo/config && \
echo '' >> /root/.cargo/config && \
echo '[source.ustc]' >> /root/.cargo/config && \
echo 'registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"' >> /root/.cargo/config
# 安装 Rust 目标和组件
RUN rustup target add aarch64-unknown-none \
riscv64gc-unknown-none-elf \
loongarch64-unknown-none \
x86_64-unknown-none && \
rustup component add rust-src rustfmt
# 安装 Cargo 工具(使用缓存和超时设置)
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/app/target \
CARGO_HTTP_TIMEOUT=120 \
CARGO_NET_RETRY=10 \
cargo install --locked --version 0.3.0 cargo-binutils && \
cargo install --locked cargo-xbuild
# 下载 LoongArch 交叉工具链
COPY loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz .
RUN tar -xf loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz && \
rm loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz
# 设置交叉编译工具链路径
ENV PATH="/cross-tools/bin:${PATH}"
# 设置工作目录
WORKDIR /app
2.构建出docker镜像

3.修改ci.yml文件进行调用
#用于登录 GitHub 容器注册表(GHCR),确保能拉取私有镜像 ghcr.io/jaxtonmax/hvisor-ci:latest。
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Run linter in container
run: |
docker run --rm -v "$(pwd):/workdir" -w /workdir \
ghcr.io/jaxtonmax/hvisor-ci:latest \
make fmt-test
4.提交ci测试,还有部分报错没有解决

目前的问题
报错1:unittest:
怀疑: qemu版本问题
一直提示不结束:
怀疑: 编译器要求所有非标准 cfg 条件必须显式声明,否则会抛出警告。这些警告在 CI 环境下可能被重复打印。

报错2:systemtest:
怀疑:问题在于脚本执行过程中无法找到 sudo 命令,导致挂载操作失败

下一步目标
1.升级qemu环境解决unittest error
2.查看环境 \ 尝试不使用sudo挂载 解决systemerror

浙公网安备 33010602011771号