This directory contains CI for the CUDly CLI: automated build, test, lint, and security checks. There are no deployment workflows here -- this repo ships a CLI binary, not a running service.
File: ci.yml
Runs comprehensive quality checks on every pull request and push to main
or develop.
- lint - golangci-lint,
go vet, and a gocyclo complexity gate (>10) - workflow-lint - actionlint and zizmor against
.github/workflows/ - unit-tests -
go test -race -short ./...with coverage upload to Codecov - integration-tests -
go test -race -tags=integration ./... - security-scan - govulncheck, gosec (SARIF upload), Trivy filesystem scan
- snyk-scan - Snyk dependency scan (skipped on forked PRs without the token)
- cli-build -
make build, then./cudly --helpas a smoke check - ci-success - gate job that requires every job above to have succeeded
- Pull requests to
mainordevelop - Pushes to
mainordevelop - Manual dispatch
SNYK_TOKEN(optional -- Snyk scanning is skipped without it)
# Runs automatically on push/PR
git push origin feature-branch
# Or trigger manually
gh workflow run ci.ymlFile: pre-commit.yml
Runs the repository's .pre-commit-config.yaml hooks (gofmt, go vet,
go mod tidy, general file hygiene, hadolint, actionlint, zizmor,
markdownlint, gocyclo, git-secrets, gosec, Trivy config) against every file
on pushes and pull requests to main. This mirrors what pre-commit run --all-files does locally, so a clean local run should also pass here.
- Pull requests to
main - Pushes to
main
None.
# Run the same checks locally before pushing
pip install 'pre-commit==4.0.1'
pre-commit install
pre-commit run --all-filesLint or vet fails:
make lint
make vetUnit tests fail:
make test-unitComplexity gate fails:
make complexitySecurity scan fails:
make security-scanpre-commit fails:
pre-commit run --all-files