name: CI on: pull_request: branches: [ master ] jobs: build: name: Build strategy: matrix: go-version: [1.21.x, 1.20.x] platform: [ubuntu-20.04, macos-latest] runs-on: ${{ matrix.platform }} env: GO111MODULE: on GOPATH: ${{ github.workspace }} DISPLAY: ":99.0" EGL_PLATFORM: "x11" defaults: run: working-directory: ${{ env.GOPATH }}/src/gonum.org/v1/plot steps: - name: Install Go uses: actions/setup-go@v3 with: go-version: ${{ matrix.go-version }} - name: Checkout code uses: actions/checkout@v3 with: path: ${{ env.GOPATH }}/src/gonum.org/v1/plot fetch-depth: 1 - name: Cache-Go uses: actions/cache@v3 with: # In order: # * Module download cache # * Build cache (Linux) # * Build cache (Mac) # * Build cache (Windows) path: | ~/go/pkg/mod ~/.cache/go-build ~/Library/Caches/go-build '%LocalAppData%\go-build' key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - name: Install Linux packages if: matrix.platform == 'ubuntu-20.04' run: | sudo apt-get update sudo apt-get install -qq gcc pkg-config libwayland-dev libx11-dev libx11-xcb-dev libxkbcommon-x11-dev libgles2-mesa-dev libegl1-mesa-dev libffi-dev libxcursor-dev libvulkan-dev xvfb xdotool # start a virtual frame buffer Xvfb :99 -screen 0 1920x1024x24 & - name: Check copyrights+formatting run: | # Required for format check. go install golang.org/x/tools/cmd/goimports@latest # Required for imports check. go install gonum.org/v1/tools/cmd/check-imports@latest # Required for copyright header check. go install gonum.org/v1/tools/cmd/check-copyright@latest ./.ci/check-copyright.sh ./.ci/check-formatting.sh - name: Build run: | go install -v ./... - name: Test Linux if: matrix.platform == 'ubuntu-20.04' run: | go test -v ./... ./.ci/check-imports.sh ./.ci/test-coverage.sh - name: Test Windows if: matrix.platform == 'windows-latest' run: | go test -v ./... - name: Test Darwin if: matrix.platform == 'macos-latest' run: | go test -v ./... - name: Upload-Coverage if: matrix.platform == 'ubuntu-20.04' uses: codecov/codecov-action@v2