Thank you for your interest in contributing to k6registry!
Before you begin, make sure to familiarize yourself with the Code of Conduct. If you've previously contributed to other open source project, you may recognize it as the classic Contributor Covenant.
If you have a golang development environment installed, a go generate
command must be issued after modifying the source files.
The other option is to install the cdo tool and perform the tasks described here. The cdo tool can most conveniently be installed using the eget tool.
eget szkiba/cdo
The cdo tool can then be used to perform the tasks described in the following sections.
Help about tasks:
cdo
Contributing will require the use of some tools, which can be installed most easily with a well-configured eget tool.
eget mikefarah/yq
eget atombender/go-jsonschema
eget szkiba/mdcode
eget golangci/golangci-lint
eget goreleaser/goreleaser
The JSON schema of the registry can be found in the registry.schema.yaml file, after modification of which the schema in JSON format (registry.schema.json) and the golang data model (registry_gen.go) must be regenerated.
yq -o=json -P docs/registry.schema.yaml > docs/registry.schema.json
go-jsonschema -p k6registry --only-models -o registry_gen.go docs/registry.schema.yaml
The example registry can be found in example.yaml file, the documentation (registry.md, README.md) must be updated after modification.
mdcode update docs/registry.md
mdcode update README.md
After changing the CLI tool or example registry, the documentation must be updated in README.md.
go run ./tools/gendoc README.md
mdcode update README.md
The golangci-lint
tool is used for static analysis of the source code.
It is advisable to run it before committing the changes.
golangci-lint run
go test -count 1 -race -coverprofile=coverage.txt ./...
Requires : test
go tool cover -html=coverage.txt
This is the easiest way to create an executable binary (although the release process uses the goreleaser
tool to create release versions).
go build -ldflags="-w -s" -o k6registry ./cmd/k6registry
The goreleaser command-line tool is used during the release process. During development, it is advisable to create binaries with the same tool from time to time.
rm -f k6registry
goreleaser build --snapshot --clean --single-target -o k6registry
Building a Docker image. Before building the image, it is advisable to perform a snapshot build using goreleaser. To build the image, it is advisable to use the same Docker.goreleaser
file that goreleaser
uses during release.
Requires : snapshot
docker build -t k6registry -f Dockerfile.goreleaser .
rm -rf build
The most robust thing is to update everything (both the schema and the example) after modifying the source.
Requires : schema, example, readme
go run ./cmd/k6registry . --legacy | yq '.[]|= pick(["module","description","official","cloud","imports","outputs","repo"])|sort_by(.module)' > ./docs/legacy.yaml