name: Linux race on: push: branches: - main pull_request: branches: - '*' - 'release-branch/*' concurrency: group: ${{ github.workflow }}-$${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: build: runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[ci skip]')" steps: - name: Check out code into the Go module directory uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v3 with: go-version-file: go.mod id: go - name: Build test wrapper run: ./tool/go build -o /tmp/testwrapper ./cmd/testwrapper - name: Basic build run: go build ./cmd/... - name: Run tests and benchmarks with -race flag on linux run: go test -exec=/tmp/testwrapper -race -bench=. -benchtime=1x ./... - name: Check that no tracked files in the repo have been modified run: git diff --no-ext-diff --name-only --exit-code || (echo "Build/test modified the files above."; exit 1) - name: Check that no files have been added to the repo run: | # Note: The "error: pathspec..." you see below is normal! # In the success case in which there are no new untracked files, # git ls-files complains about the pathspec not matching anything. # That's OK. It's not worth the effort to suppress. Please ignore it. if git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' then echo "Build/test created untracked files in the repo (file names above)." exit 1 fi - 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'