Implement algvis CLI for Algorithm Visualizer #1
This file contains hidden or 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
| name: ci | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Build and test on Linux and macOS with the race detector on. gofmt and vet | |
| # run here too so a formatting slip fails fast on both platforms. | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: go.mod | |
| check-latest: true | |
| cache: true | |
| - name: gofmt | |
| run: | | |
| unformatted=$(gofmt -l .) | |
| if [ -n "$unformatted" ]; then | |
| echo "These files need gofmt -s -w:" | |
| echo "$unformatted" | |
| exit 1 | |
| fi | |
| - name: go vet | |
| run: go vet ./... | |
| - name: build | |
| run: go build ./... | |
| - name: test | |
| run: go test -race -count=1 -coverprofile=coverage.out ./... | |
| - name: coverage summary | |
| if: matrix.os == 'ubuntu-latest' | |
| run: go tool cover -func=coverage.out | tail -1 | |
| # golangci-lint bundles staticcheck, govet, ineffassign, errcheck, unused and | |
| # more, so it is the main quality gate. Config lives in .golangci.yml. | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: go.mod | |
| check-latest: true | |
| cache: true | |
| - uses: golangci/golangci-lint-action@v8 | |
| with: | |
| version: latest | |
| # Scan the module and its dependencies for known vulnerabilities. | |
| govulncheck: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: go.mod | |
| check-latest: true | |
| cache: true | |
| - name: govulncheck | |
| run: | | |
| go install golang.org/x/vuln/cmd/govulncheck@latest | |
| govulncheck ./... | |
| # Confirm go.mod and go.sum are tidy: a PR that adds an import without running | |
| # go mod tidy fails here instead of breaking a later release. | |
| tidy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: go.mod | |
| check-latest: true | |
| cache: true | |
| - name: go mod tidy is clean | |
| run: | | |
| go mod tidy | |
| git diff --exit-code -- go.mod go.sum |