1"use strict";(globalThis.webpackChunkshipwright_io_website=globalThis.webpackChunkshipwright_io_website||[]).push([[3095],{5390(e,i,t){t.r(i),t.d(i,{assets:()=>o,contentTitle:()=>a,default:()=>c,frontMatter:()=>l,metadata:()=>n,toc:()=>h});var n=t(1268),r=t(4848),s=t(8453);const l={title:"Shipwright v0.20 Is Here!",description:"Shipwright v0.20 release announcement with new features, fixes, and infrastructure updates.",date:new Date("2026-07-20T16:00:00.000Z"),slug:"shipwright-v0.20-is-here",authors:[{name:"Shipwright Contributors"}],tags:["shipwright","release"]},a=void 0,o={authorsImageUrls:[void 0]},h=[{value:"Build Updates",id:"build-updates",level:2},{value:"Multi-Architecture Output Platforms",id:"multi-architecture-output-platforms",level:3},{value:"Build Strategy Improvements",id:"build-strategy-improvements",level:3},{value:"Secret Reconciliation Simplification",id:"secret-reconciliation-simplification",level:3},{value:"Infrastructure and Dependency Updates",id:"infrastructure-and-dependency-updates",level:3},{value:"CLI Updates",id:"cli-updates",level:2},{value:"BuildRun Gather Command",id:"buildrun-gather-command",level:3},{value:"Operator Update",id:"operator-update",level:2},{value:"Installing Shipwright",id:"installing-shipwright",level:2},{value:"Build",id:"build",level:3},{value:"CLI",id:"cli",level:3},{value:"Windows",id:"windows",level:4},{value:"Mac",id:"mac",level:4},{value:"Linux",id:"linux",level:4},{value:"Operator",id:"operator",level:3}];function d(e){const i={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.p,{children:"We are excited to announce the release of Shipwright v0.20.0! This release brings multi-architecture\nimage build supp
1ort, improved strategy management, and updates across the Build, CLI, and Operator\nprojects."}),"\n",(0,r.jsx)(i.h2,{id:"build-updates",children:"Build Updates"}),"\n",(0,r.jsx)(i.h3,{id:"multi-architecture-output-platforms",children:"Multi-Architecture Output Platforms"}),"\n",(0,r.jsxs)(i.p,{children:["A new ",(0,r.jsx)(i.code,{children:"spec.output.platforms"})," field has been added to ",(0,r.jsx)(i.code,{children:"Build"})," and ",(0,r.jsx)(i.code,{children:"BuildRun"})," resources, allowing you\nto define target OS/architecture combinations for multi-architecture image builds. The BuildRun\ncontroller validates platform entries up front and rejects invalid or conflicting configurations\nbefore a build starts. This feature requires the controller to run in ",(0,r.jsx)(i.code,{children:"PipelineRun"})," executor mode\n(",(0,r.jsx)(i.code,{children:"BUILDRUN_EXECUTOR=PipelineRun"}),"), building on the execution mode introduced in v0.19."]}),"\n",(0,r.jsx)(i.h3,{id:"build-strategy-improvements",children:"Build Strategy Improvements"}),"\n",(0,r.jsx)(i.p,{children:"The sample buildpacks build strategies now support configuring insecure registries in a fashion\nsimilar to the buildah and source-to-image strategies."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.code,{children:"BuildStrategy"})," and ",(0,r.jsx)(i.code,{children:"ClusterBuildStrategy"})," resources now support Kustomize strategic merge patching for individual build steps by name, so\npatches no longer replace the entire steps list."]}),"\n",(0,r.jsx)(i.h3,{id:"secret-reconciliation-simplification",children:"Secret Reconciliation Simplification"}),"\n",(0,r.jsxs)(i.p,{children:["You are no longer required to use the ",(0,r.jsx)(i.code,{children:"build.shipwright.io/referenced.secret=true"})," annotation on\nSecrets to cause related Builds to be reconciled when a Secret changes. The annotation is without meaning now."]}
1),"\n",(0,r.jsx)(i.h3,{id:"infrastructure-and-dependency-updates",children:"Infrastructure and Dependency Updates"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Updated to Tekton LTS v1.12.0"}),"\n",(0,r.jsx)(i.li,{children:"Increased resource requests and limits for the Ko build strategy to better meet real-world use cases"}),"\n",(0,r.jsxs)(i.li,{children:["The minimum supported Kubernetes version is now ",(0,r.jsx)(i.strong,{children:"v1.34.0"})]}),"\n",(0,r.jsxs)(i.li,{children:["The minimum supported Tekton version is now ",(0,r.jsx)(i.strong,{children:"v1.3.0"})," (Tekton LTS ",(0,r.jsx)(i.strong,{children:"v1.12.0"})," is recommended)"]}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:["Check out the full release notes on ",(0,r.jsx)(i.a,{href:"https://github.com/shipwright-io/build/releases/tag/v0.20.0",children:"GitHub"}),"\nfor further details. Note that there are also ",(0,r.jsx)(i.a,{href:"https://github.com/shipwright-io/build/releases/tag/v0.20.5",children:"v0.20.5"}),"\nand other patch releases that rebuild components to address vulnerabilities in base images and Go\nstandard libraries."]}),"\n",(0,r.jsx)(i.h2,{id:"cli-updates",children:"CLI Updates"}),"\n",(0,r.jsx)(i.h3,{id:"buildrun-gather-command",children:"BuildRun Gather Command"}),"\n",(0,r.jsxs)(i.p,{children:["The new ",(0,r.jsx)(i.code,{children:"shp buildrun gather"})," subcommand collects ",(0,r.jsx)(i.code,{children:"BuildRun"}),", ",(0,r.jsx)(i.code,{children:"TaskRun"}),"/",(0,r.jsx)(i.code,{children:"PipelineRun"}),", ",(0,r.jsx)(i.code,{children:"Pod"}),", and\nindividual pod log objects for troubleshooting. Use the ",(0,r.jsx)(i.code,{children:"--output"})," flag to set the destination\ndirectory and the ",(0,r.jsx)(i.code,{children:"--archive"})," flag to compress the output as a ",(0,r.jsx)(i.code,{children:".tar.gz"})," archive."]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:"shp buildrun gather my-buildrun --output ./debug --archive\n"})}),"\n",(0,r.jsx)(i.p,{children:"This release also updates user-facing logs to follow a consistent pattern across subcommands."}),"\n",(0,r.jsxs)(i.p,{children:["See the CLI release notes on ",(0,r.jsx)(i.a,{href:"https://github.com/shipwright-io/cli/releases/tag/v0.20.0",children:"GitHub"}),"\nfor further details."]}),"\n",(0,r.jsx)(i.h2,{id:"operator-update",children:"Operator Update"}),"\n",(0,r.jsxs)(i.p,{children:["The operator was upgraded to deploy Shipwright Build v0.20.0 components. It also adds optional\nShipwright Triggers support. Set ",(0,r.jsx)(i.code,{children:"spec.triggers.enable: true"})," on the ",(0,r.jsx)(i.code,{children:"ShipwrightBuild"})," custom\nresource to deploy the Triggers controller alongside Shipwright Build."]}),"\n",(0,r.jsxs)(i.p,{children:["See the operator release notes on ",(0,r.jsx)(i.a,{href:"https://github.com/shipwright-io/operator/releases/tag/v0.20.0",children:"GitHub"}),"\nfor details."]}),"\n",(0,r.jsx)(i.h2,{id:"installing-shipwright",children:"Installing Shipwright"}),"\n",(0,r.jsx)(i.h3,{id:"build",children:"Build"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:"Install Tekton LTS v1.12.0:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:"kubectl apply --filename https://infra.tekton.dev/tekton-releases/pipeline/previous/v1.12.0/release.yaml\n"})}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:"Install v0.20.0 using the release YAML manifest:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:"kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.20.0/release.yaml --server-side\n\ncurl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.20.0/hack/setup-webhook-cert.sh | bash\n"})}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:"(Optionally) Install the sample build strategies using the YAML manifest:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:"kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.20.0/sample-strategies.yaml --server-side\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"cli",children:"CLI"}),"\n",(0,r.jsx)(i.h4,{id:"windows",children:"Windows"}
1),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:"curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.20.0/shp_0.20.0_windows_x86_64.tar.gz | tar xzf - shp.exe\nshp version\nshp help\n"})}),"\n",(0,r.jsx)(i.h4,{id:"mac",children:"Mac"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:"curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.20.0/shp_0.20.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp\nshp version\nshp help\n"})}),"\n",(0,r.jsx)(i.h4,{id:"linux",children:"Linux"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:"curl --silent --fail --location \"https://github.com/shipwright-io/cli/releases/download/v0.20.0/shp_0.20.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz\" | sudo tar -xzf - -C /usr/bin shp\nshp version\nshp help\n"})}),"\n",(0,r.jsx)(i.h3,{id:"operator",children:"Operator"}),"\n",(0,r.jsxs)(i.p,{children:["To deploy and manage Shipwright Builds in your cluster, first ensure the operator v0.20.0 is\ninstalled and running on your cluster. You can follow the instructions on\n",(0,r.jsx)(i.a,{href:"https://operatorhub.io/operator/shipwright-operator",children:"OperatorHub"}),"."]}),"\n",(0,r.jsxs)(i.p,{children:["To enable optional Shipwright Triggers support, set ",(0,r.jsx)(i.code,{children:"spec.triggers.enable: true"})," on your\n",(0,r.jsx)(i.code,{children:"ShipwrightBuild"})," resource:"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"---\napiVersion: operator.shipwright.io/v1alpha1\nkind: ShipwrightBuild\nmetadata:\n name: shipwright-operator\nspec:\n targetNamespace: shipwright-build\n triggers:\n enable: true\n"})})]})}function c(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453(e,i,t){t.d(i,{R:()=>l,x:()=>a});var n=t(6540);const r={},s=n.createContext(r);function l(e){const i=n.useContext(s);return n.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),n.createElement(s.Provider,{value:i},e.children)}},1268(e){e.exports=JSON.parse('{"permalink":"/blog/shipwright-v0.20-is-here","editUrl":"https://github.com/facebook/docusaurus/tree/main/blog/blog/2026-07-20-shipwright-v0.20-is-here.md","source":"@site/blog/2026-07-20-shipwright-v0.20-is-here.md","title":"Shipwright v0.20 Is Here!","description":"Shipwright v0.20 release announcement with new features, fixes, and infrastructure updates.","date":"2026-07-20T16:00:00.000Z","tags":[{"inline":true,"label":"shipwright","permalink":"/blog/tags/shipwright"},{"inline":true,"label":"release","permalink":"/blog/tags/release"}],"readingTime":3.26,"hasTruncateMarker":false,"authors":[{"name":"Shipwright Contributors","socials":{},"key":null,"page":null}],"frontMatter":{"title":"Shipwright v0.20 Is Here!","description":"Shipwright v0.20 release announcement with new features, fixes, and infrastructure updates.","date":"2026-07-20T16:00:00.000Z","slug":"shipwright-v0.20-is-here","authors":[{"name":"Shipwright Contributors"}],"tags":["shipwright","release"]},"unlisted":false,"prevItem":{"title":"Shipwright at KubeCon India 2026","permalink":"/blog/shipwright-at-kubecon-india-2026"},"nextItem":{"title":"Shipwright v0.19 Is Here!","permalink":"/blog/shipwright-v0.19-is-here"}}
1')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.