name: Linux 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: Basic build run: go build ./cmd/... - name: Build variants run: | go install --tags=ts_include_cli ./cmd/tailscaled go install --tags=ts_omit_aws ./cmd/tailscaled - name: Get QEMU run: | # The qemu in Ubuntu 20.04 (Focal) is too old; we need 5.x something # to run Go binaries. 5.2.0 (Debian bullseye) empirically works, and # use this PPA which brings in a modern qemu. sudo add-apt-repository -y ppa:jacob/virtualisation sudo apt-get -y update sudo apt-get -y install qemu-user - name: Run tests on linux run: go test -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'