Deploys Shipwright Build Controller, CLI and optionally a Container Registry instance, to perform continuous integration (CI) tests on the shipwright-io projects.
Usage
This action needs go and ko and a Kubernetes instance (available through kubectl), make sure those items are installed.
Given all the dependencies in place, the action performs the rollout and verification steps in the Kubernetes instance, the outcome is shipwright-io ready to use.
The snippet shows a complete usage example:
jobs: setup-shipwright: name: Shipwright steps: # using KinD to provide the Kubernetes instance and kubectl - uses: helm/kind-action@v1.2.0 # golang is a required to deploy the build controller and CLI - uses: actions/setup-go@v3 with: go-version: '1.18' # ko is a dependency to deploy the build controller instance - uses: imjasonh/setup-ko@v0.6 # setting up Shipwright Build Controller, CLI and a Container Registry - uses: shipwright-io/setup@v1
Inputs
Example usage using defaults:
jobs: use-action: steps: - uses: shipwright-io/setup@v1 with: tekton-version: v0.38.3 shipwright-ref: v0.11.0 cli-ref: v0.11.0 kind-cluster-name: kind setup-registry: true registry-hostname: registry.registry.svc.cluster.local patch-etc-hosts: true
The inputs are described below:
| Input | Default | Description |
|---|---|---|
tekton-version |
v0.38.3 |
Tekton Pipeline release version |
shipwright-ref |
v0.11.0 |
Shipwright Build Controller repository tag or SHA |
cli-ref |
v0.11.0 |
Shipwright CLI repository tag or SHA |
kind-cluster-name |
kind |
KinD cluster name |
setup-registry |
true |
Setup a Container Registry instance (true or false) |
registry-hostname |
registry.registry.svc.cluster.local |
Container Registry hostname inside KinD |
patch-etc-hosts |
true |
Patch "/etc/hosts" to alias the Container Registry hostname to "127.0.0.1" |
The Shipwright components Build Controller and CLI can be deployed using a specific commit SHA or tag.
Inside the Shipwright Organization
By default the action execute a checkout of the Build and CLI repositories, however when working on those specific projects you can skip using _ignore. As the following example:
jobs: use-action: steps: - uses: shipwright-io/setup@v1 with: shipwright-ref: _ignore cli-ref: _ignore
Contributing
To run this action locally, you can use act as the following example:
act --secret="GITHUB_TOKEN=${GITHUB_TOKEN}"The GITHUB_TOKEN is necessary for checking out the upstream repositories in the action workspace, and for this purpose the token only needs read-only permissions on the shipwright-io organization. The token is provided by default during GitHub Action execution inside GitHub.
Troubleshooting
This action uses KinD to instantiate a temporary Kubernetes and test itself against it, thus if you're using the same setup make sure there are no clusters left behind before running the action again.
When tests fail, you can use the context provided by KinD to connect on cluster, and then you're free to inspect all the components, logs, events, etc. For instance:
Once you set up the context you are able to inspect, for example, the Build controller logs.
kubectl --namespace=shipwright-build get pods
kubectl --namespace=shipwright-build logs --follow shipwright-build-controller-xxxxxxx