Skip to content

Comments

ci: add GitHub Actions CI pipeline with Makefile and golangci-lint#2

Merged
amirna2 merged 7 commits intomainfrom
ci/github-actions-setup
Feb 23, 2026
Merged

ci: add GitHub Actions CI pipeline with Makefile and golangci-lint#2
amirna2 merged 7 commits intomainfrom
ci/github-actions-setup

Conversation

@amirna2
Copy link
Owner

@amirna2 amirna2 commented Feb 23, 2026

Summary

Add automated CI/CD pipeline using GitHub Actions with a "local CI" philosophy — the Makefile is the single source of truth for all checks, and GitHub Actions simply calls make ci.

  • GitHub Actions workflow (.github/workflows/ci.yml) triggered on PRs and pushes to main
  • Makefile with build, test, lint, vet, fmt-check, fmt, ci, and clean targets
  • golangci-lint v2 configuration with practical linter set (govet, errcheck, staticcheck, unused, ineffassign, gocritic, misspell)
  • Fixed 6 gofmt formatting violations across the codebase
  • Removed 2 unused functions caught by the unused linter
  • Updated PR template with CI checklist

Purpose

The project had strong engineering practices documented (testing, planning, PRs) but zero automated enforcement. This closes the gap — make ci runs the same checks locally and in GitHub Actions, ensuring consistent quality gates.

Tests Performed

  • make ci passes locally (fmt-check, vet, lint, build, test — all green)
  • All 16 test files pass with race detection enabled
  • golangci-lint reports 0 issues
  • make build produces binary at bin/questcore

Tests Not Performed

  • GitHub Actions workflow not yet validated on GitHub (will be validated by this PR itself)

CI Checks

  • make ci passes locally

AI Assisted

  • Yes
  • No

Plan: docs/plans/ci-setup.md

🤖 Generated with Claude Code

amirna2 and others added 7 commits February 22, 2026 18:13
Run gofmt -w on 6 files with formatting violations to prepare
for CI enforcement of consistent formatting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enable govet, errcheck, staticcheck, unused, ineffassign, gocritic,
and misspell linters. Suppress captLocal check for gopher-lua's
conventional L parameter naming.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unused getBool function in loader/compile.go
- Remove unused styledPlayerInput function in tui/style.go
- Simplify else-if in loader/loader_test.go (gocritic elseif)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Makefile with build, test, lint, vet, fmt-check, and ci targets.
The ci target runs the full pipeline and is used by both local dev
and GitHub Actions. Add /bin/ to .gitignore for build output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add CI workflow that calls `make ci` on both PRs and pushes to main.
Uses the same Makefile targets developers run locally for full parity.
Update PR template with CI checklist item.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Document the CI/CD implementation plan covering GitHub Actions
workflow, Makefile, and golangci-lint configuration choices.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
golangci-lint-action v6 does not support golangci-lint v2.x.
Upgrade to v7 which adds v2 compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@amirna2 amirna2 merged commit 339f52e into main Feb 23, 2026
1 check passed
@amirna2 amirna2 deleted the ci/github-actions-setup branch February 23, 2026 05:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant