- Create a GitHub account
- Setup GitHub access via SSH
- Create and checkout a repo fork
- Set up your shell environment
- Install requirements
- Set up a Kubernetes cluster
- Running Tests
Then you can iterate.
The Go tools require that you clone the repository to the
src/github.com/tektoncd/pruner directory in your
GOPATH.
To check out this repository:
- Create your own fork of this repo
- Clone it to your machine:
mkdir -p ${GOPATH}/src/github.com/tektoncd
cd ${GOPATH}/src/github.com/tektoncd
git clone git@github.com:${YOUR_GITHUB_USERNAME}/pruner.git
cd tektoncd-pruner
git remote add upstream git@github.com:tektoncd/pruner.git
git remote set-url --push upstream no_pushAdding the upstream remote sets you up nicely for regularly
syncing your fork.
You must install these tools:
go: The language Tekton Pruner is built ingit: For source controlkubectl(optional): For interacting with your kube cluster
To setup a Kubernetes cluster for development, see the Tekton Pipelines documentation.
To build the Tekton Pruner project, you'll need to set GO111MODULE=on
environment variable to force go to use go
modules.
You can stand up a version of this controller on-cluster (to your kubectl config current-context):
ko apply -f config/For development with monitoring and metrics, use the observability setup script:
./hack/setup-observability-dev.shThis sets up a Kind cluster with Tekton Pruner, Prometheus, and Jaeger. Access via:
- Prometheus: http://localhost:9091
- Jaeger: http://localhost:16686
- Pruner Metrics: http://localhost:9090/metrics
As you make changes to the code, you can redeploy components individually:
# Redeploy the controller
ko apply -f config/controller.yaml
# Redeploy the webhook
ko apply -f config/webhook.yamlYou can clean up everything with:
ko delete -f config/To look at the controller logs, run:
kubectl -n tekton-pipelines logs deployment/tekton-pruner-controllerPruner uses the standard go testing framework. Unit tests can be run with:
TO BE UPDATED
Integration tests require a running cluster and Pruner to be installed. These are protected by a build tag "e2e". To run integration tests:
TO BE UPDATED