Skip to content

Latest commit

 

History

History
117 lines (81 loc) · 2.97 KB

DEVELOPMENT.md

File metadata and controls

117 lines (81 loc) · 2.97 KB

Developing

Getting started

  1. Create a GitHub account
  2. Setup GitHub access via SSH
  3. Create and checkout a repo fork
  4. Set up your shell environment
  5. Install requirements
  6. Set up a Kubernetes cluster
  7. Running Tests

Then you can iterate.

Checkout your fork

The Go tools require that you clone the repository to the src/github.com/tektoncd/chains directory in your GOPATH.

To check out this repository:

  1. Create your own fork of this repo
  2. 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}/chains.git
cd chains
git remote add upstream git@github.com:tektoncd/chains.git
git remote set-url --push upstream no_push

Adding the upstream remote sets you up nicely for regularly syncing your fork.

Requirements

You must install these tools:

  1. go: The language Tekton Chains is built in
  2. git: For source control
  3. kubectl (optional): For interacting with your kube cluster

Kubernetes cluster

To setup a Kubernetes cluster for development, see the Tekton Pipelines documentation.

Environment Setup

To build the Tekton Chains project, you'll need to set GO111MODULE=on environment variable to force go to use go modules.

Iterating

Install Chains

You can stand up a version of this controller on-cluster (to your kubectl config current-context):

ko apply -f config/

Redeploy controller

As you make changes to the code, you can redeploy your controller with:

ko apply -f config/100-deployment.yaml

Tear it down

You can clean up everything with:

ko delete -f config/

Accessing logs

To look at the controller logs, run:

kubectl -n tekton-chains logs deployment/tekton-chains-controller

Running Tests

Chains uses the standard go testing framework. Unit tests can be run with:

go test ./...

Integration tests require a running cluster and Chains to be installed. These are protected by a build tag "e2e". To run integration tests:

go test -v -count=1 -tags=e2e -timeout=20m  ./test

Some of these tests require access to GCP resources. To run those, set the name of the GCP project you are running in:

GCP_PROJECT_ID=dlorenc-vmtest2 go test -v -count=1 -tags=e2e -timeout=20m  ./test