houseabsolute / actions-rust-cross

GitHub Action to compile Rust with cross
Apache License 2.0
118 stars 13 forks source link

Matrix options must only contain primitive values #17

Closed passwa11 closed 5 months ago

passwa11 commented 5 months ago

https://github.com/passwa11/Certificate-Transparency-Monitor---Rust

name: Rust

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

env:
  CARGO_TERM_COLOR: always
  CRATE_NAME: passwa11
  GITHUB_TOKEN: ${{ github.token }}
  RUST_BACKTRACE: 1

jobs:
  test:
    name: ${{ matrix.platform.os_name }} with rust ${{ matrix.toolchain }}
    runs-on: ${{ matrix.platform.os }}
    strategy:
      fail-fast: false
      matrix:
        platform:
          - os_name: FreeBSD-x86_64
            os: ubuntu-20.04
            target: x86_64-unknown-freebsd
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-FreeBSD-x86_64.tar.gz
            skip_tests: true
          - os_name: Linux-x86_64
            os: ubuntu-20.04
            target: x86_64-unknown-linux-musl
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-x86_64-musl.tar.gz
          - os_name: Linux-aarch64
            os: ubuntu-20.04
            target: aarch64-unknown-linux-musl
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-aarch64-musl.tar.gz
          - os_name: Linux-arm
            os: ubuntu-20.04
            target: arm-unknown-linux-musleabi
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-arm-musl.tar.gz
          - os_name: Linux-i686
            os: ubuntu-20.04
            target: i686-unknown-linux-musl
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-i686-musl.tar.gz
            skip_tests: true
          - os_name: Linux-powerpc
            os: ubuntu-20.04
            target: powerpc-unknown-linux-gnu
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-powerpc-gnu.tar.gz
            skip_tests: true
          - os_name: Linux-powerpc64
            os: ubuntu-20.04
            target: powerpc64-unknown-linux-gnu
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-powerpc64-gnu.tar.gz
            skip_tests: true
          - os_name: Linux-powerpc64le
            os: ubuntu-20.04
            target: powerpc64le-unknown-linux-gnu
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-powerpc64le.tar.gz
            skip_tests: true
          - os_name: Linux-riscv64
            os: ubuntu-20.04
            target: riscv64gc-unknown-linux-gnu
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-riscv64gc-gnu.tar.gz
          - os_name: Linux-s390x
            os: ubuntu-20.04
            target: s390x-unknown-linux-gnu
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Linux-s390x-gnu.tar.gz
            skip_tests: true
          - os_name: NetBSD-x86_64
            os: ubuntu-20.04
            target: x86_64-unknown-netbsd
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-NetBSD-x86_64.tar.gz
            skip_tests: true
          - os_name: Windows-aarch64
            os: windows-latest
            target: aarch64-pc-windows-msvc
            bin: Certificate-Transparency-Monitor.exe
            name: Certificate-Transparency-Monitor-Windows-aarch64.zip
            skip_tests: true
          - os_name: Windows-i686
            os: windows-latest
            target: i686-pc-windows-msvc
            bin: Certificate-Transparency-Monitor.exe
            name: Certificate-Transparency-Monitor-Windows-i686.zip
            skip_tests: true
          - os_name: Windows-x86_64
            os: windows-latest
            target: x86_64-pc-windows-msvc
            bin: Certificate-Transparency-Monitor.exe
            name: Certificate-Transparency-Monitor-Windows-x86_64.zip
          - os_name: macOS-x86_64
            os: macOS-latest
            target: x86_64-apple-darwin
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Darwin-x86_64.tar.gz
          - os_name: macOS-aarch64
            os: macOS-latest
            target: aarch64-apple-darwin
            bin: Certificate-Transparency-Monitor
            name: Certificate-Transparency-Monitor-Darwin-aarch64.tar.gz
            skip_tests: true
        toolchain:
          - stable
          - beta
          - nightly
    steps:
      - uses: actions/checkout@v4
      - name: Cache cargo & target directories
        uses: Swatinem/rust-cache@v2
      - name: Configure Git
        run: |
          git config --global user.email "jdoe@example.com"
          git config --global user.name "J. Doe"
      - name: Install musl-tools on Linux
        run: sudo apt-get update --yes && sudo apt-get install --yes musl-tools
        if: contains(matrix.platform.name, 'musl')
      - name: Build binary
        uses: houseabsolute/actions-rust-cross@v0
        with:
          command: "build"
          target: ${{ matrix.platform.target }}
          toolchain: ${{ matrix.toolchain }}
          args: "--locked --release"
          strip: true
      - name: Run tests
        uses: houseabsolute/actions-rust-cross@v0
        with:
          command: "test"
          target: ${{ matrix.platform.target }}
          toolchain: ${{ matrix.toolchain }}
          args: "--locked --release"
        if: ${{ !matrix.platform.skip_tests }}
      - name: Package as archive
        shell: bash
        run: |
          cd target/${{ matrix.platform.target }}/release
          if [[ "${{ matrix.platform.os }}" == "windows-latest" ]]; then
            7z a ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }}
          else
            tar czvf ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }}
          fi
          cd -
        if: |
          matrix.toolchain == 'stable' &&
          ( startsWith( github.ref, 'refs/tags/v' ) ||
            github.ref == 'refs/tags/test-release' )
      - name: Publish release artifacts
        uses: actions/upload-artifact@v4
        with:
          name: Certificate-Transparency-Monitor-${{ matrix.platform.os_name }}
          path: "Certificate-Transparency-Monitor-*"
        if: matrix.toolchain == 'stable' && github.ref == 'refs/tags/test-release'
      - name: Generate SHA-256
        run: shasum -a 256 ${{ matrix.platform.name }}
        if: |
          matrix.toolchain == 'stable' &&
          matrix.platform.os == 'macOS-latest' &&
          ( startsWith( github.ref, 'refs/tags/v' ) ||
            github.ref == 'refs/tags/test-release' )
      - name: Publish GitHub release
        uses: softprops/action-gh-release@v2
        with:
          draft: true
          files: "Certificate-Transparency-Monitor-*"
          # body_path: Changes.md
        if: matrix.toolchain == 'stable' && startsWith( github.ref, 'refs/tags/v' )

error: Matrix options must only contain primitive values

image
autarch commented 5 months ago

I'm not sure exactly what's going on, but it doesn't really have anything to do with this action. I've not seen this error from GH Actions before, and from some Googling it's not clear exactly what in your config isn't a primitive value.