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

如何在GitHub工作流的策略矩阵中指定作业运行器架构?

能否在GitHub Actions策略矩阵中指定运行器架构?

完全可以。你可以通过策略矩阵结合runs-on变量,轻松实现跨linux/amd64和linux/i386架构的构建与测试作业。

方案1:使用GitHub托管运行器(通过多库支持实现i386)

GitHub托管的Ubuntu默认是amd64架构,但可以通过安装multilib工具链来编译和运行32位i386程序。以下是完整的工作流示例:

name: 跨架构构建测试
on: [push, pull_request]

jobs:
  cross-arch-build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            arch: amd64
          - os: ubuntu-latest
            arch: i386
    steps:
      - uses: actions/checkout@v4

      - name: 配置架构依赖
        run: |
          if [ "${{ matrix.arch }}" = "i386" ]; then
            sudo dpkg --add-architecture i386
            sudo apt-get update -y
            sudo apt-get install -y gcc-multilib g++-multilib
          fi

      - name: 构建项目
        run: |
          # 根据架构调整编译参数
          if [ "${{ matrix.arch }}" = "i386" ]; then
            make CC="gcc -m32" CXX="g++ -m32"
          else
            make
          fi

      - name: 执行测试
        run: |
          # 假设测试程序会根据架构命名,比如test-amd64或test-i386
          ./test-${{ matrix.arch }}

方案2:使用自托管运行器(直接指定架构)

如果你有自己的自托管运行器,可以直接在矩阵中指定对应架构的运行器标签,无需额外配置依赖:

name: 跨架构构建测试
on: [push, pull_request]

jobs:
  cross-arch-build:
    runs-on: ${{ matrix.runner }}
    strategy:
      matrix:
        runner: [linux-amd64-runner, linux-i386-runner]
    steps:
      - uses: actions/checkout@v4
      - name: 构建项目
        run: make
      - name: 执行测试
        run: ./test

关键说明

  • 矩阵的include字段用于组合操作系统和架构变量,让作业在不同架构环境下执行
  • 对于i386架构,必须安装multilib工具链才能编译32位代码
  • 自托管运行器需要提前配置好对应架构的环境,确保依赖齐全

内容的提问来源于stack exchange,提问作者Daniel Walker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:45:06