Skip to content

Commit 1a2c86e

Browse files
committed
Improve architecture testing in CI
We now also launch tests on multiple architectures in our CI pipeline. - Linux (amd64, i386) - Windows (amd64, i386) - macOS (amd64, arm64)
1 parent 0133c18 commit 1a2c86e

File tree

1 file changed

+41
-8
lines changed

1 file changed

+41
-8
lines changed

.github/workflows/go.yaml

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,53 @@ jobs:
3737
version: v2.4
3838
build:
3939
strategy:
40+
fail-fast: false # continue to run all jobs even if one fails
4041
matrix:
41-
go-versions:
42-
[ '1.18', '1.19', '1.20', '1.21', '1.22', '1.23', '1.24', '1.25' ]
43-
runs-on: ubuntu-latest
42+
include:
43+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: stable}
44+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: oldstable}
45+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: '1.18'}
46+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: '1.19'}
47+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: '1.20'}
48+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: '1.21'}
49+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: '1.22'}
50+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: '1.23'}
51+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: '1.24'}
52+
- {os: ubuntu-latest, GOOS: linux, GOARCH: amd64, go-version: '1.25'}
53+
- {os: ubuntu-latest, GOOS: linux, GOARCH: 386, go-version: stable}
54+
- {os: macos-latest, GOOS: darwin, GOARCH: amd64, go-version: stable}
55+
- {os: macos-latest, GOOS: darwin, GOARCH: arm64, go-version: stable}
56+
- {os: windows-latest, GOOS: windows, GOARCH: amd64, go-version: stable}
57+
- {os: windows-latest, GOOS: windows, GOARCH: 386, go-version: stable}
58+
runs-on: ${{ matrix.os }}
59+
env:
60+
# GOARCH and GOOS are used by the Go toolchain
61+
GOARCH: ${{ matrix.GOARCH }}
62+
GOOS: ${{ matrix.GOOS }}
4463
continue-on-error: true # make sure to run all versions, even if one fails
64+
name: >
65+
Build with Go ${{ matrix.go-version }}
66+
for ${{ matrix.GOOS }}/${{ matrix.GOARCH }}
4567
steps:
4668
- uses: actions/checkout@v5
4769
- name: Set up Go
48-
uses: actions/setup-go@v5
70+
uses: actions/setup-go@v6
4971
with:
50-
go-version: ${{ matrix.go-versions }}
72+
go-version: ${{ matrix.go-version }}
5173
- name: Run go vet
5274
run: go vet ./...
53-
- name: Run yaml-test-suit tests
75+
- name: Run yaml-test-suite tests
5476
run: make test-yts
55-
- name: Run go test
56-
run: GO111MODULE=on go test -v -race .
77+
# make test-yts can only be run on non-Windows OS
78+
if: ${{ matrix.GOOS != 'windows' }}
79+
env:
80+
# This one is used by makeplus/makes
81+
OS-TYPE: ${{ matrix.GOOS }}
82+
- name: Run go test with race detection
83+
# -race is not applicable to 32-bit architectures
84+
if: ${{ matrix.GOARCH != '386' }}
85+
run: go test -v -race .
86+
- name: Run go test without race detection
87+
# -race is not applicable to 32-bit architectures
88+
if: ${{ matrix.GOARCH == '386' }}
89+
run: go test -v .

0 commit comments

Comments
 (0)