name: Windows race on: push: branches: - main pull_request: branches: - '*' jobs: test: runs-on: windows-latest if: "!contains(github.event.head_commit.message, '[ci skip]')" steps: - name: Install Go uses: actions/setup-go@v3 with: go-version: 1.19.x - name: Checkout code uses: actions/checkout@v3 - name: Restore Cache uses: actions/cache@v3 with: # Note: unlike some other setups, this is only grabbing the mod download # cache, rather than the whole mod directory, as the download cache # contains zips that can be unpacked in parallel faster than they can be # fetched and extracted by tar path: | ~/go/pkg/mod/cache ~\AppData\Local\go-build # The -2- here should be incremented when the scheme of data to be # cached changes (e.g. path above changes). # The -race- here ensures that non-race builds and race builds do not # overwrite each others cache, as while they share some files, they # differ in most by volume (build cache). # TODO(raggi): add a go version here. key: ${{ runner.os }}-go-2-race-${{ hashFiles('**/go.sum') }} - name: Print toolchain details run: gcc -v # There is currently an issue in the race detector in Go on Windows when # used with a newer version of GCC. # See https://github.com/tailscale/tailscale/issues/4926. - name: Downgrade MinGW shell: bash run: | choco install mingw --version 10.2.0 --allow-downgrade - name: Test with -race flag # Don't use -bench=. -benchtime=1x. # Somewhere in the layers (powershell?) # the equals signs cause great confusion. run: go test -race -bench . -benchtime 1x ./... - uses: k0kubun/action-slack@v2.0.0 with: payload: | { "attachments": [{ "text": "${{ job.status }}: ${{ github.workflow }} " + "() " + "of ${{ github.repository }}@" + "${{ github.ref }}".split('/').reverse()[0] + " by ${{ github.event.head_commit.committer.name }}", "color": "danger" }] } env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} if: failure() && github.event_name == 'push'