When contributing to this repository, please first discuss the change you wish to make via issue or pull request description.
- Go 1.23+
- Docker (for building images)
- golangci-lint v2.x (for linting)
# All modules
cd api && go test -race ./...
cd client && go test -race ./...
cd cli && go test -race ./...
# Lint
cd api && golangci-lint run ./...
cd client && golangci-lint run ./...
cd cli && golangci-lint run ./...docker build --platform linux/amd64 -f deployments/dockerfiles/api.Dockerfile .
docker build --platform linux/amd64 -f deployments/dockerfiles/client.Dockerfile .- Create a branch from
main. - Ensure all tests pass and lint is clean (
go test -race ./...,golangci-lint run ./...). - CI will run automatically on your PR: build, test, lint, and Docker build validation.
- Update the README if your change affects configuration, environment variables, or output behavior.
- One approval is required to merge.
- Follow idiomatic Go patterns.
- The project uses
golangci-lintv2 with a.golangci.ymlconfig in each module directory. ST*(stylecheck) rules are suppressed in the legacy codebase. New code should follow Go conventions.- Error strings should be lowercase and not end with punctuation (per Go convention).
api/ -- REST API server (creates and monitors scanner pods)
client/ -- CLI client (calls API, prints results, generates SonarQube output)
cli/ -- Interactive CLI for target/token management
deployments/ -- Dockerfiles and deployment scripts
Each directory is an independent Go module with its own go.mod.
This project follows the Contributor Covenant v1.4. Be respectful, constructive, and professional in all interactions.
Report unacceptable behavior to the repository maintainers via GitHub Issues.