- 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
Then you can iterate.
The Go tools require that you clone the repository to the
src/github.com/tektoncd/cli
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}/cli.git
cd cli
git remote add upstream git@github.com:tektoncd/cli.git
git remote set-url --push upstream no_push
Adding the upstream
remote sets you up nicely for regularly
syncing your fork.
You must install these tools:
go
: The language Tekton Pipelines CLI is built ingit
: For source controlkubectl
(optional): For interacting with your kube cluster
Docker for Desktop using an edge version has been proven to work for both developing and running Pipelines. Your Kubernetes version must be 1.11 or later.
To setup a cluster with GKE:
- Install required tools and setup GCP project
(You may find it useful to save the ID of the project in an environment
variable (e.g.
PROJECT_ID
).
-
Create a GKE cluster (with
--cluster-version=latest
but you can use any version 1.18 or later):export PROJECT_ID=my-gcp-project export CLUSTER_NAME=mycoolcluster gcloud container clusters create $CLUSTER_NAME \ --enable-autoscaling \ --min-nodes=1 \ --max-nodes=3 \ --scopes=cloud-platform \ --enable-basic-auth \ --no-issue-client-certificate \ --project=$PROJECT_ID \ --region=us-central1 \ --machine-type=n1-standard-4 \ --image-type=cos \ --num-nodes=1 \ --cluster-version=1.18
Note The recommended GCE machine type is
n1-standard-4
Note that the--scopes
argument togcloud container cluster create
controls what GCP resources the cluster's default service account has access to; for example to give the default service account full access to your GCR registry, you can addstorage-full
to your--scopes
arg. See Authenticating to GCP for more details. -
Grant cluster-admin permissions to the current user:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=$(gcloud config get-value core/account)
To build the Tekton pipelines cli, you'll need to set GO111MODULE=on
environment variable to force go
to use go
modules.
While iterating on the project, you may need to:
Dependencies:
go mod is used and required for dependencies.
Building In Local Directory:
The following command builds the tkn
binary in your current directory:
go build ./cmd/tkn
After it finishes, you can run the following to execute the binary to verify it works:
./tkn
Building and Adding to $PATH:
If you want this tkn
binary on your $PATH
, a couple options are:
-
Use
go install ./cmd/tkn
to install the binary into your$GOBIN
. Rerungo install ./cmd/tkn
when you want to update the binary. -
Add a soft link to the binary into your
$PATH
. Rerungo build
when you want to update the binary.go build ./cmd/tkn ln -s $PWD/tkn $GOPATH/bin/tkn
-
After it finishes, you can run the following to execute the binary to verify it works:
./tkn
Whether you have added the tkn
binary to your current directory or added it to
your $PATH
, you are now be ready to make changes to tkn
.
Notes:
- For building, Go
1.12
is required - If you are building in your
$GOPATH
folder, you need to specifyGO111MODULE
for building it
# if you are building in your $GOPATH
GO111MODULE=on go build ./cmd/tkn
You can now try updating code for client and test out the changes by building the tkn
binary.
The docs are autogenerated according to cobra command. Whenever you are updating any command configuration, you should also update the docs in the PR.
-
To generate/update markdown pages
make docs
-
To generate/update man pages
make man
You can stand up a version of this controller on-cluster (to your
kubectl config current-context
):
- using a
release.yaml
file from the Tekton pipelines releases - using tektoncd/cli sources, following DEVELOPMENT.md.