You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置GitLab Runner适配不同架构?解决ARM64构建AMD64镜像问题

GitLab Runner(arm64)跨架构构建与测试的优雅解决方案

现有环境

  • 私有GitLab实例
  • 多台amd64架构的Google e2私有Runner,核心配置如下:
concurrent = 1
check_interval = 0
...
[[runners]]
  ...
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "alpine"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache", "/certs/client", "/builds:/builds"]
    shm_size = 0
    wait_for_services_timeout=120
    network_mode = "host"

CI流水线执行步骤

  1. 构建标签为someimage:{ref}-temp的镜像
  2. 使用pytest-docker结合该临时镜像执行集成测试
  3. 测试通过后,将镜像重新打标签为someimage:{ref}并推送到镜像仓库

问题详情

  • amd64 Runner运行流水线时一切正常,生成的镜像可在任意amd64架构的Linux/Windows机器上使用
  • 将树莓派4(arm64架构)注册为额外GitLab Runner后,流水线运行成功,但生成的镜像仅能在arm64设备上运行,部署到amd64生产服务器时提示架构不匹配
  • 尝试使用docker buildx bake配合.hcl文件定义目标架构,成功生成amd64跨架构镜像,但在树莓派Runner上无法启动该镜像执行集成测试(同样因架构不匹配)

当前设想方案

通过bake配置文件定义双架构目标,构建someimage:{ref}-temp-amd64和someimage:{ref}-temp-arm64两个临时镜像,使用对应原生架构运行测试后,选择amd64镜像发布。但希望找到更优雅的方案:配置树莓派Runner全程模拟amd64架构,避免在项目代码中引入复杂的构建命令和额外配置。

求可行的解决办法。

内容的提问来源于stack exchange,提问作者Vagos Duke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:27:31