Just before cdCon 2022, we are releasing our v0.10 release. But before we look into it, we would like to invite you to join our cdCon sessions. We’ll have two interesting presentations and a summit where you can bring every feedback and suggestion that you would like to share with us, and bring all your questions that you want to get answered. See our blog post for more information. See you in Austin or in the virtual space.
Let’s get back to v0.10. It comes with one big and long-wanted feature:
We extended our build strategy resource to contain volumes. Build strategy authors can “finalize” them - or make them overridable by Build users.
The most interesting scenario that this enables is the caching of build artifacts. Here is how the ko build strategy makes use of it:
emptyDir
. Those are ephemeral volumes for the runtime of a pod. The default behavior therefore is that no caching happens just like the strategy behaves all the time. But, the build strategy defines the volume as overridable.Especially if you rebuild larger projects, the performance gain is enormous.
We will look at other sample build strategies in the future and will evolve them with volume support in the next releases.
Note: the feature comes with one breaking change that is relevant for Build Strategy authors. Previously, you were able to define volumeMounts
on buildSteps
. Shipwright then implicitly added the volumes with an emptyDir. Given we now support volumes in build strategies, we force build strategy authors to define the volume. We did that in other sample build strategies where such implicit volumes were used to share directories between buildSteps
. For example, the source-to-image build strategy now has explicit emptyDir volumes to share directories between the source analysis and build step.
Beside that, we invested in maintenance-related items:
Install Tekton v0.35.1:
kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.35.1/release.yaml
Install v0.10.0 using the release YAML manifest:
kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.10.0/release.yaml
(Optionally) Install the sample build strategies using the YAML manifest:
kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.10.0/sample-strategies.yaml
curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.10.0/cli_0.10.0_windows_x86_64.tar.gz | tar xzf - shp.exe
shp version
shp help
curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.10.0/cli_0.10.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp
shp version
shp help
curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.10.0/cli_0.10.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp
shp version
shp help
To deploy and manage Shipwright Builds in your cluster, first make sure the operator v0.10.0 is installed and running on your cluster. You can follow the instructions on OperatorHub.
Next, create the following:
---
apiVersion: operator.shipwright.io/v1alpha1
kind: ShipwrightBuild
metadata:
name: shipwright-operator
spec:
targetNamespace: shipwright-build