Status checks #49
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Workflow to check whether changes to master fulfill all requirements. | |
name: Status checks | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
schedule: | |
# Run every monday on 9:00 in the morning (UTC). | |
- cron: "0 9 * * 1" | |
# Make it possible to trigger the checks manually. | |
workflow_dispatch: | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 1.21 # staticcheck does not support Go 1.22 yet. | |
- name: Run gofmt | |
# gofmt does not return non-zero exit codes on failure, so we have to check that there are no issues using grep. | |
run: gofmt -d -e . | (! grep ^) | |
- name: Run go vet | |
run: go vet ./... | |
- name: Install ineffassign | |
run: go install github.com/gordonklaus/ineffassign@latest | |
- name: Run ineffassign | |
run: ineffassign ./... | |
- name: Install misspell | |
run: go install github.com/client9/misspell/cmd/misspell@latest | |
- name: Run misspell | |
# misspel is set to ignore false positive 'witn' which stands for witness in gabi. | |
run: misspell -error -i witn . | |
- name: Install staticcheck | |
run: go install honnef.co/go/tools/cmd/[email protected] | |
- name: Run staticcheck | |
run: staticcheck ./... | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ^1.18 | |
- name: Run all unit tests | |
run: go test -v ./... | |
analyze: | |
# Require successful test to make sure analysis does not fail on syntax errors. | |
needs: test | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
contents: read | |
security-events: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: go.mod | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v2 | |
with: | |
languages: go | |
queries: +security-and-quality | |
- name: Perform CodeQL Analysis | |
uses: github/codeql-action/analyze@v2 |