reedsolomon-go/.github/workflows/go.yml

92 lines
2.1 KiB
YAML

name: Go
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
strategy:
matrix:
go-version: [1.16.x, 1.17.x, 1.18.x]
os: [ubuntu-latest, macos-latest, windows-latest]
env:
CGO_ENABLED: 0
runs-on: ${{ matrix.os }}
steps:
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v2
- name: Vet
run: go vet ./...
- name: Test
run: go test ./...
- name: Test Noasm
run: go test -tags=noasm&&go test -no-avx512&&go test -no-avx512 -no-avx2&&go test -no-avx512 -no-avx2 -no-ssse3
- name: Test Race
env:
CGO_ENABLED: 1
run: go test -cpu="1,4" -short -race -v .
build-special:
env:
CGO_ENABLED: 0
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.18.x
- name: Checkout code
uses: actions/checkout@v2
- name: fmt
run: diff <(gofmt -d .) <(printf "")
- name: Test 386
run: GOOS=linux GOARCH=386 go test -short ./...
- name: Build examples
run: go build examples/simple-decoder.go&&go build examples/simple-encoder.go&&go build examples/stream-decoder.go&&go build examples/stream-encoder.go
- name: Test Races, noasm, 1 cpu
env:
CGO_ENABLED: 1
run: go test -tags=noasm -cpu=1 -short -race -timeout 20m .
- name: Test Races, noasm, 4 cpu
env:
CGO_ENABLED: 1
run: go test -tags=noasm -cpu=4 -short -race -timeout 20m .
- name: Test Races, no avx512
env:
CGO_ENABLED: 1
run: go test -no-avx512 -short -race .
- name: Test Races, no avx2
env:
CGO_ENABLED: 1
run: go test -no-avx512 -no-avx2 -short -race .
- name: Test Races, no ssse3
env:
CGO_ENABLED: 1
run: go test -no-avx512 -no-avx2 -no-ssse3 -short -race .
- name: Test Microarch v4
shell: bash {0}
run: go run testlevel.go 4;if [ $? -eq 0 ]; then GOAMD64=v4 go test -no-avx512 ./...; else true; fi