docs: Audit and improve documentation #42
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: ["**"] | |
| pull_request: | |
| branches: ["**"] | |
| permissions: | |
| contents: read | |
| actions: write | |
| jobs: | |
| build-test-wasm: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.23.x' | |
| - name: Install extra tools | |
| run: | | |
| go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest | |
| go install golang.org/x/vuln/cmd/govulncheck@latest | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Go env | |
| run: go env | |
| - name: CI checks (lint, tests, coverage, etc.) | |
| run: make ci | |
| - name: Benchmarks (linear) | |
| run: go test -bench . -benchmem -run=^$ ./... | tee bench-linear.txt | |
| - name: Coverage summary (linear) | |
| run: | | |
| if [ -f coverage.out ]; then | |
| go tool cover -func=coverage.out > coverage-summary.md; | |
| else | |
| echo "coverage.out not found" > coverage-summary.md; | |
| fi | |
| - name: Upload coverage summary (linear) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-summary | |
| path: coverage-summary.md | |
| if-no-files-found: error | |
| - name: Upload benchmarks (linear) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: bench-linear | |
| path: bench-linear.txt | |
| if-no-files-found: error | |
| - name: Build WebAssembly module | |
| run: make wasm-build | |
| - name: Prepare npm package folder | |
| run: make npm-pack | |
| - name: WASM smoke test (Node) | |
| run: node npm/poindexter-wasm/smoke.mjs | |
| - name: Create npm tarball | |
| id: npm_pack | |
| run: | | |
| echo "tarball=$(npm pack ./npm/poindexter-wasm)" >> "$GITHUB_OUTPUT" | |
| - name: Upload dist (WASM artifacts) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: poindexter-wasm-dist | |
| if-no-files-found: error | |
| path: | | |
| dist/poindexter.wasm | |
| dist/wasm_exec.js | |
| - name: Upload npm package folder | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: npm-poindexter-wasm | |
| if-no-files-found: error | |
| path: npm/poindexter-wasm/** | |
| - name: Upload npm tarball | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: npm-poindexter-wasm-tarball | |
| if-no-files-found: error | |
| path: ${{ steps.npm_pack.outputs.tarball }} | |
| build-test-gonum: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.23.x' | |
| - name: Install extra tools | |
| run: | | |
| go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest | |
| go install golang.org/x/vuln/cmd/govulncheck@latest | |
| - name: Go env | |
| run: go env | |
| - name: Lint | |
| run: golangci-lint run | |
| - name: Build (gonum tag) | |
| run: go build -tags=gonum ./... | |
| - name: Unit tests + race + coverage (gonum tag) | |
| run: go test -tags=gonum -race -coverpkg=./... -coverprofile=coverage-gonum.out -covermode=atomic ./... | |
| - name: Fuzz (10s per fuzz test, gonum tag) | |
| run: | | |
| set -e | |
| for pkg in $(go list ./...); do | |
| FUZZES=$(go test -tags=gonum -list '^Fuzz' "$pkg" | grep '^Fuzz' || true) | |
| if [ -z "$FUZZES" ]; then | |
| echo "==> Skipping $pkg (no fuzz targets)" | |
| continue | |
| fi | |
| for fz in $FUZZES; do | |
| echo "==> Fuzzing $pkg :: $fz for 10s" | |
| go test -tags=gonum -run=NONE -fuzz=^${fz}$ -fuzztime=10s "$pkg" | |
| done | |
| done | |
| - name: Benchmarks (gonum tag) | |
| run: go test -tags=gonum -bench . -benchmem -run=^$ ./... | tee bench-gonum.txt | |
| - name: Upload coverage (gonum) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-gonum | |
| path: coverage-gonum.out | |
| if-no-files-found: error | |
| - name: Coverage summary (gonum) | |
| run: | | |
| if [ -f coverage-gonum.out ]; then | |
| go tool cover -func=coverage-gonum.out > coverage-summary-gonum.md; | |
| else | |
| echo "coverage-gonum.out not found" > coverage-summary-gonum.md; | |
| fi | |
| - name: Upload coverage summary (gonum) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-summary-gonum | |
| path: coverage-summary-gonum.md | |
| if-no-files-found: error | |
| - name: Upload benchmarks (gonum) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: bench-gonum | |
| path: bench-gonum.txt | |
| if-no-files-found: error |