| title | Contributing to KubeBrowse |
|---|---|
| description | Description of your new file. |
Thank you for your interest in contributing to Kubebrowse! This document provides guidelines and instructions for contributing to this project.
We are committed to fostering a welcoming community. Please read and adhere to our Code of Conduct in all interactions.
-
Fork and clone the repository
```bash
git clone https://github.com/browsersec/KubeBrowse.git
cd KubeBrowse
```
-
Set up the development environment
```bash
make setup
```
-
Run the application
```bash
make run
```
-
Access the application
- Open a browser and navigate to
http://localhost:4567/connect
- Open a browser and navigate to
If you encounter errors like compile: version "go1.24.0" does not match go tool version "go1.24.3", follow these steps:
-
Check your Go version
```bash
go version
```
-
Clean the Go module cache
```bash
go clean -modcache
```
-
Clean the Go build cache
```bash
go clean -cache
```
-
Reset the build system
```bash
rm -rf $GOPATH/pkg/mod/cache/build
```
-
Install or update to a consistent Go version
Using Go's official installation:
```bash
wget https://go.dev/dl/go1.24.3.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.3.linux-amd64.tar.gz
```
Or using a version manager like
asdf:```bash
asdf install golang 1.24.3
asdf global golang 1.24.3
```
-
Check your environment variables
Ensure your PATH and GOROOT are set correctly:
```bash
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
```
-
Regenerate the Go modules
```bash
go mod tidy
```
-
/cmd/guac/- Main application entry point -
/utils/- Utility functions -
/certs/- Certificate files for TLS -
/.githooks/- Git hooks for development
-
main- Stable branch containing the latest release -
dev- Development branch for integrating features -
Feature branches should be created from
devand named using the format:feature/short-descriptionorfix/issue-description
We follow Conventional Commits for commit messages:
```
<type>(<scope>): <description>
<body>
<footer>
```
Types include:
-
feat: A new feature -
fix: A bug fix -
docs: Documentation changes -
style: Code style changes (formatting, etc.) -
refactor: Code changes that neither fix bugs nor add features -
test: Adding or modifying tests -
chore: Changes to the build process or auxiliary tools
Example:
```
feat(api): add endpoint for user authentication
-
Implement JWT token generation
-
Add middleware for token validation
Fixes #123
```
This project uses Lefthook for managing Git hooks to ensure code quality. The pre-commit hook checks:
-
Code formatting
-
Static analysis
-
Linting
-
Tests
-
Potential secrets
Install the hooks with:
```bash
make hooks
```
You can manually run the pre-commit checks:
```bash
make lint
make lint-all
```
If Lefthook is not found, you'll be prompted to install it. Lefthook hooks are automatically installed when you run make setup.
-
Create a new branch from
dev -
Implement your changes
-
Ensure tests pass and code meets quality standards
-
Push your branch and create a pull request against
dev -
Address any feedback from reviewers
-
PRs must have a clear description of changes
-
All tests must pass
-
Code must be properly formatted
-
Documentation must be updated if necessary
-
Changes should be covered by tests
-
Follow the Go Code Review Comments
-
Use the standard Go formatting
gofmt) -
Write idiomatic Go code
-
Keep functions small and focused
-
Add comments for exported functions, types, and packages
-
Write tests for all new features and bug fixes
-
Aim for high test coverage, especially for critical paths
-
Use table-driven tests when appropriate
-
Run tests with
make test
-
Document all exported functions, types, and packages
-
Update the README.md if adding new features or changing existing functionality
-
Add examples for complex features
-
Create a release branch from
dev -
Update version information
-
Run comprehensive tests
-
Merge to
mainonce approved -
Tag the release with the version number
-
Update documentation with release notes
Thank you for contributing to GUAC!
*