Shipwright is an extensible framework for building container images on Kubernetes.
## Why?
With Shipwright, developers get a simplified approach for building container images, by defining a minimal YAML that does not require
any previous knowledge of containers or container tooling. All you need is your source code in git and access to a container registry.
Shipwright supports any tool that can build container images in Kubernetes clusters, such as:
- [Kaniko](https://github.com/GoogleContainerTools/kaniko)
- [Cloud Native Buildpacks](https://buildpacks.io/)
- [BuildKit](https://github.com/moby/buildkit)
- [Buildah](https://buildah.io/)
## Try It!
- We assume you already have a Kubernetes cluster (v1.29+). If you don't, you can use [KinD](https://kind.sigs.k8s.io), which you can install by running [`./hack/install-kind.sh`](./hack/install-kind.sh).
- We also require a Tekton installation (v0.59.+). To install the latest LTS release, run:
```bash
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v1.3.1/release.yaml
```
If you are using OpenShift cluster refer [Running on OpenShift](#running-on-openshift) for some more configurations.
- Install the Shipwright deployment. To install the latest version, run:
```bash
kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.17.0/release.yaml --server-side
curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.17.0/hack/setup-webhook-cert.sh | bash
curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.17.0/hack/storage-version-migration.sh | bash
```
To install the latest nightly release, run:
```bash
kubectl apply --filename "https://github.com/shipwright-io/build/releases/download/nightly/nightly-$(curl --silent --location https://github.com/shipwright-io/build/releases/download/nightly/latest.txt).yaml" --server-side
curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/main/hack/setup-webhook-cert.sh | bash
curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/main/hack/storage-version-migration.sh | bash
```
- Install the Shipwright strategies. To install the latest version, run:
```bash
kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.17.0/sample-strategies.yaml --server-side
```
To install the latest nightly release, run:
```bash
kubectl apply --filename "https://github.com/shipwright-io/build/releases/download/nightly/nightly-$(curl --silent --location https://github.com/shipwright-io/build/releases/download/nightly/latest.txt)-sample-strategies.yaml" --server-side
```
- Generate a secret to access your container registry, such as one on [Docker Hub](https://hub.docker.com/) or [Quay.io](https://quay.io/):
```bash
REGISTRY_SERVER=https://index.docker.io/v1/ REGISTRY_USER= REGISTRY_PASSWORD=
kubectl create secret docker-registry push-secret \
--docker-server=$REGISTRY_SERVER \
--docker-username=$REGISTRY_USER \
--docker-password=$REGISTRY_PASSWORD \
--docker-email=
```
- Create a *Build* object, replacing `` with the registry username your `push-secret` secret have access to:
```bash
REGISTRY_ORG=
cat <