feat: add OpenSpec proposal for repo lifecycle management #460
Workflow file for this run
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: | |
| branches: [main] | |
| jobs: | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.25' | |
| cache: true | |
| - name: Build | |
| run: go build -v ./... | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.25' | |
| cache: true | |
| - name: Run golangci-lint | |
| uses: golangci/golangci-lint-action@v7 | |
| with: | |
| version: v2.8.0 | |
| unit-tests: | |
| name: Unit Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.25' | |
| cache: true | |
| - name: Install tmux | |
| run: sudo apt-get update && sudo apt-get install -y tmux | |
| - name: Run unit tests with coverage | |
| env: | |
| TMUX_TESTS: "1" | |
| run: | | |
| go test -coverprofile=coverage.out -covermode=atomic ./internal/... ./pkg/... | |
| go tool cover -func=coverage.out | |
| - name: Upload coverage report | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-report | |
| path: coverage.out | |
| retention-days: 7 | |
| coverage-check: | |
| name: Coverage Check | |
| runs-on: ubuntu-latest | |
| needs: unit-tests | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.25' | |
| cache: true | |
| - name: Install tmux | |
| run: sudo apt-get update && sudo apt-get install -y tmux | |
| - name: Check coverage thresholds | |
| env: | |
| TMUX_TESTS: "1" | |
| run: | | |
| go test -coverprofile=coverage.out -covermode=atomic ./internal/... ./pkg/... | |
| echo "## Coverage Summary" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "| Package | Coverage |" >> $GITHUB_STEP_SUMMARY | |
| echo "|---------|----------|" >> $GITHUB_STEP_SUMMARY | |
| # Parse coverage and check thresholds | |
| go tool cover -func=coverage.out | while read line; do | |
| if echo "$line" | grep -q "total:"; then | |
| total=$(echo "$line" | awk '{print $NF}' | tr -d '%') | |
| echo "| **Total** | **${total}%** |" >> $GITHUB_STEP_SUMMARY | |
| echo "" | |
| echo "Total coverage: ${total}%" | |
| fi | |
| done | |
| # Show per-package summary | |
| echo "" | |
| echo "Per-package coverage:" | |
| go test -cover ./internal/... ./pkg/... 2>&1 | grep "coverage:" | sort | |
| e2e-tests: | |
| name: E2E Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.25' | |
| cache: true | |
| - name: Install tmux | |
| run: sudo apt-get update && sudo apt-get install -y tmux | |
| - name: Configure git | |
| run: | | |
| git config --global user.email "ci@github.com" | |
| git config --global user.name "GitHub CI" | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install Claude CLI | |
| run: npm install -g @anthropic-ai/claude-code | |
| - name: Run e2e tests | |
| run: go test -v ./test/... | |
| verify-generated-docs: | |
| name: Verify Generated Docs | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.25' | |
| cache: true | |
| - name: Regenerate docs | |
| run: go generate ./pkg/config/... | |
| - name: Check for uncommitted changes | |
| run: | | |
| if ! git diff --quiet docs/DIRECTORY_STRUCTURE.md; then | |
| echo "Error: docs/DIRECTORY_STRUCTURE.md is out of date!" | |
| echo "Run 'go generate ./pkg/config/...' and commit the changes." | |
| echo "" | |
| echo "Diff:" | |
| git diff docs/DIRECTORY_STRUCTURE.md | |
| exit 1 | |
| fi | |
| echo "Generated docs are up to date." |