如何将 Github 操作与具有不同架构的 Docker 容器一起使用
How to use Github Actions with a Docker container with a different architecture
我想自动构建我正在编写的应用程序。我想为 ARM64/v8 (aarch64) 和 amd64 (x86) 构建它。我成功地为 x86 案例创建了 Github 工作流程。
name: Build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
container:
image: ubuntu:jammy
steps:
- name: Check architecture
run: uname -m
- name: Check release version
run: cat /etc/lsb-release
现在我想对 aarch64 做同样的事情。我尝试使用 SHA select aarch64 容器并添加 --platform 选项。
container:
image: ubuntu:jammy@sha256:2166a543cffd7180cb98ed58bb6a99b0e4b57ecae8859c2a8ee5aa4f5e0a4fda
options: --platform linux/arm64/v8
但是工作流在 uname -m
命令处失败并显示错误消息 Error response from daemon: Container cb276d55aaf4a3f1cc50d308788233ee50fee29f80c05d6e557a76ec99916951 is not running
。
如果我想 运行 一个 docker 容器用于我自己机器上的不同架构,我必须先 运行 docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
。我认为这是我的 GitHub 工作流程中缺少的。不幸的是,我找不到任何描述如何在 GitHub 操作上完成的内容。
我在这里发现 this action 使用起来很简单。它现在对我来说已经足够好了。
我想自动构建我正在编写的应用程序。我想为 ARM64/v8 (aarch64) 和 amd64 (x86) 构建它。我成功地为 x86 案例创建了 Github 工作流程。
name: Build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
container:
image: ubuntu:jammy
steps:
- name: Check architecture
run: uname -m
- name: Check release version
run: cat /etc/lsb-release
现在我想对 aarch64 做同样的事情。我尝试使用 SHA select aarch64 容器并添加 --platform 选项。
container:
image: ubuntu:jammy@sha256:2166a543cffd7180cb98ed58bb6a99b0e4b57ecae8859c2a8ee5aa4f5e0a4fda
options: --platform linux/arm64/v8
但是工作流在 uname -m
命令处失败并显示错误消息 Error response from daemon: Container cb276d55aaf4a3f1cc50d308788233ee50fee29f80c05d6e557a76ec99916951 is not running
。
如果我想 运行 一个 docker 容器用于我自己机器上的不同架构,我必须先 运行 docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
。我认为这是我的 GitHub 工作流程中缺少的。不幸的是,我找不到任何描述如何在 GitHub 操作上完成的内容。
我在这里发现 this action 使用起来很简单。它现在对我来说已经足够好了。