...

Text file src/github.com/tetratelabs/wazero/.github/workflows/spectest.yaml

Documentation: github.com/tetratelabs/wazero/.github/workflows

     1name: WebAssembly Core Specification Test
     2on:
     3  pull_request:
     4    branches: [main]
     5    paths-ignore:  # ignore docs as they are built with Netlify.
     6      - '**/*.md'
     7      - 'site/**'
     8      - 'netlify.toml'
     9  push:
    10    branches: [main]
    11    paths-ignore:  # ignore docs as they are built with Netlify.
    12      - '**/*.md'
    13      - 'site/**'
    14      - 'netlify.toml'
    15
    16defaults:
    17  run:  # use bash for all operating systems unless overridden
    18    shell: bash
    19
    20concurrency:
    21  # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run
    22  group: ${{ github.ref }}-${{ github.workflow }}-${{ github.actor }}
    23  cancel-in-progress: true
    24
    25jobs:
    26  test_amd64:
    27    name: ${{ matrix.spec-version }} - linux/amd64, Go-${{ matrix.go-version }}
    28    runs-on: ubuntu-22.04
    29    strategy:
    30      fail-fast: false  # don't fail fast as sometimes failures are arch/OS specific
    31      matrix:  # Use versions consistent with wazero's Go support policy.
    32        go-version:
    33          - "1.21"  # Current Go version
    34          - "1.19"  # Floor Go version of wazero (current - 2)
    35        spec-version:
    36          - "v1"
    37          - "v2"
    38
    39    steps:
    40      - uses: actions/checkout@v3
    41
    42      - uses: actions/setup-go@v4
    43        with:
    44          go-version: ${{ matrix.go-version }}
    45
    46      - run: make spectest.${{ matrix.spec-version }}
    47
    48  test_scratch:
    49    name: ${{ matrix.spec-version }} / ${{ matrix.arch }}, Go-${{ matrix.go-version }}
    50    runs-on: ubuntu-22.04
    51    strategy:
    52      fail-fast: false  # don't fail fast as sometimes failures are arch/OS specific
    53      matrix:  # Use versions consistent with wazero's Go support policy.
    54        go-version:
    55          - "1.21"  # Current Go version
    56          - "1.19"  # Floor Go version of wazero (current - 2)
    57        arch:
    58          - "arm64"
    59          - "riscv64"
    60        spec-version:
    61          - "v1"
    62          - "v2"
    63
    64    steps:
    65      - uses: actions/checkout@v3
    66
    67      - uses: actions/setup-go@v4
    68        with:
    69          go-version: ${{ matrix.go-version }}
    70
    71      - name: Build test binaries
    72        run: go list -f '{{.Dir}}' ./... | grep 'spectest/${{ matrix.spec-version }}' | xargs -Ipkg go test pkg -c -o spectest.test
    73        env:
    74          GOARCH: ${{ matrix.arch }}
    75          CGO_ENABLED: 0
    76
    77      - name: Set up QEMU
    78        if: ${{ matrix.arch != 'amd64' }}
    79        uses: docker/setup-qemu-action@v2
    80        with:  # Avoid docker.io rate-limits; built with internal-images.yml
    81          image: ghcr.io/tetratelabs/wazero/internal-binfmt
    82          platforms: ${{ matrix.arch }}
    83
    84      - name: Build scratch container
    85        run: |
    86          echo 'FROM scratch' >> Dockerfile
    87          echo 'CMD ["/test"]' >> Dockerfile
    88          docker buildx build -t wazero:test --platform linux/${{ matrix.arch }} .
    89
    90      - name: Run built test binaries
    91        # Note: This mounts /tmp to allow t.TempDir() in tests.
    92        run: docker run --platform linux/${{ matrix.arch }} -v $(pwd)/spectest.test:/test --tmpfs /tmp --rm -t wazero:test

View as plain text