<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Shipwright Blog</title>
        <link>https://shipwright.io/blog</link>
        <description>Shipwright Blog</description>
        <lastBuildDate>Wed, 25 Mar 2026 16:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Shipwright v0.19 Is Here!]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.19-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.19-is-here</guid>
            <pubDate>Wed, 25 Mar 2026 16:00:00 GMT</pubDate>
            <description><![CDATA[Shipwright v0.19 release announcement with new features, fixes, and infrastructure updates.]]></description>
            <content:encoded><![CDATA[<p>We are excited to announce the release of Shipwright v0.19.0! This release brings meaningful new
features for resource management, runtime flexibility, and improved developer experience.</p>
<hr>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>Security Notice: Trivy Compromise (March 2026)</div><div class="admonitionContent_BuS1"><p>On March 19, 2026, the open source Trivy project disclosed a compromise that led to a malicious release of their security scanner (v0.69.4). Shipwright imports the Trivy scanner through the build's image-processing container, which launches security scans when the vulnerability scan feature is enabled in a build. Based on our analysis, Shipwright was not affected by this compromise. None of our nightly releases included the vulnerable version of Trivy, and our current official v0.19.z releases predate the compromise. Current Shipwright adopters and end users are not affected and no further action is required.</p></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-updates">Build Updates<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#build-updates" class="hash-link" aria-label="Direct link to Build Updates" title="Direct link to Build Updates" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-resources-override">Step Resources Override<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#step-resources-override" class="hash-link" aria-label="Direct link to Step Resources Override" title="Direct link to Step Resources Override" translate="no">​</a></h3>
<p>You can now define <code>stepResources</code> in a <code>Build</code> or <code>BuildRun</code> to override the resource requests and
limits of individual steps defined in a <code>BuildStrategy</code> or <code>ClusterBuildStrategy</code>. This gives you
fine-grained control over CPU and memory allocation without having to modify the strategy itself.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="runtimeclass-support">RuntimeClass Support<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#runtimeclass-support" class="hash-link" aria-label="Direct link to RuntimeClass Support" title="Direct link to RuntimeClass Support" translate="no">​</a></h3>
<p>A new <code>runtimeClassName</code> field has been added to both <code>Build</code> and <code>BuildRun</code> resources. This allows
builds to leverage alternative container runtimes available on your cluster, enabling use cases such
as confidential computing or other runtime-specific capabilities.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="pipelinerun-execution-mode">PipelineRun Execution Mode<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#pipelinerun-execution-mode" class="hash-link" aria-label="Direct link to PipelineRun Execution Mode" title="Direct link to PipelineRun Execution Mode" translate="no">​</a></h3>
<p>This release introduces a foundational <code>PipelineRun</code> execution mode as an alternative to the
existing <code>TaskRun</code>-based execution. This enables multi-pod builds using PVC-based workspace storage,
laying the groundwork for more flexible build execution strategies in future releases.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="infrastructure-and-dependency-updates">Infrastructure and Dependency Updates<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#infrastructure-and-dependency-updates" class="hash-link" aria-label="Direct link to Infrastructure and Dependency Updates" title="Direct link to Infrastructure and Dependency Updates" translate="no">​</a></h3>
<ul>
<li class="">Updated to Tekton LTS v1.9.1</li>
<li class="">Upgraded base image to Red Hat UBI 10</li>
<li class="">Enhanced vulnerability scanning now uses both Grype and Trivy</li>
<li class="">The minimum supported Kubernetes version is now <strong>v1.33.0</strong></li>
<li class="">The minimum supported Tekton version is now <strong>v1.0.0</strong> (Tekton LTS <strong>v1.9.1</strong> is recommended)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug Fixes<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<ul>
<li class="">Fixed Tekton manifest URLs to point to <code>infra.tekton.dev</code></li>
<li class="">Fixed the Ko build strategy to correctly handle Go modules with dependencies but no vendoring</li>
</ul>
<p>Check out the full release notes on <a href="https://github.com/shipwright-io/build/releases/tag/v0.19.0" target="_blank" rel="noopener noreferrer" class="">GitHub</a>
for further details.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-updates">CLI Updates<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#cli-updates" class="hash-link" aria-label="Direct link to CLI Updates" title="Direct link to CLI Updates" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="runtimeclass-flag">RuntimeClass Flag<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#runtimeclass-flag" class="hash-link" aria-label="Direct link to RuntimeClass Flag" title="Direct link to RuntimeClass Flag" translate="no">​</a></h3>
<p>The <code>shp build create</code>, <code>shp build run</code> and <code>shp buildrun create</code> commands now supports a <code>--runtime-class</code> flag, allowing you to specify
a <code>RuntimeClass</code> for the build pod directly from the CLI:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">shp buildrun create my-build --runtime-class kata-containers</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="package-extensibility">Package Extensibility<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#package-extensibility" class="hash-link" aria-label="Direct link to Package Extensibility" title="Direct link to Package Extensibility" translate="no">​</a></h3>
<p>This release also introduces initialization options that make it easier to import the CLI as a Go
package and extend its functionality programmatically.</p>
<p>See the CLI release notes on <a href="https://github.com/shipwright-io/cli/releases/tag/v0.19.0" target="_blank" rel="noopener noreferrer" class="">GitHub</a>
for further details.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton LTS v1.9.1:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://infra.tekton.dev/tekton-releases/pipeline/previous/v1.9.1/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.19.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.19.0/release.yaml --server-side</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.19.0/hack/setup-webhook-cert.sh | bash</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.19.0/sample-strategies.yaml --server-side</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.19.0/shp_0.19.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.19.0/shp_0.19.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.19.0/shp_0.19.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.19-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>The operator release for v0.19.0 is forthcoming. Stay tuned to the
<a href="https://github.com/shipwright-io/operator/releases" target="_blank" rel="noopener noreferrer" class="">operator releases page</a> for updates.</p>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.18 Is Here!]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.18-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.18-is-here</guid>
            <pubDate>Thu, 04 Dec 2025 20:00:00 GMT</pubDate>
            <description><![CDATA[Shipwright v0.18 release announcement with new features, fixes, and deprecations.]]></description>
            <content:encoded><![CDATA[<p>We are excited to announce the release of Shipwright v0.18.0! This release brings a small set of
new features.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-updates">Build Updates<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#build-updates" class="hash-link" aria-label="Direct link to Build Updates" title="Direct link to Build Updates" translate="no">​</a></h2>
<p>In this release, we have made changes under the covers to run containers as much as possible with read-only root file system. Note that those changes are only active as long as you do not overwrite the step templates for out-of-the box containers in the <a class="" href="https://shipwright.io/docs/build/configuration/">configuration</a>. If you had made customizations there, make sure to merge your changes with our extensions.</p>
<p>Beside that, we have updated Build to utilize the Tekton v1.6 APIs. The minimum supported Kubernetes version is now v1.32.0. The minimum supported Tekton version is now v0.68.0.</p>
<p>Check out the full release notes on <a href="https://github.com/shipwright-io/build/releases/tag/v0.18.0" target="_blank" rel="noopener noreferrer" class="">GitHub of the v0.18.0 release</a> for further details. Note that there is also already a <a href="https://github.com/shipwright-io/build/releases/tag/v0.18.1" target="_blank" rel="noopener noreferrer" class="">v0.18.1 release</a> that is a rebuild with the new Go version released recently that fixed vulnerabilities</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-maintenance-update">CLI Maintenance Update<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#cli-maintenance-update" class="hash-link" aria-label="Direct link to CLI Maintenance Update" title="Direct link to CLI Maintenance Update" translate="no">​</a></h2>
<p>The CLI has no new features but updated dependencies.</p>
<p>See the CLI release notes on <a href="https://github.com/shipwright-io/cli/releases/tag/v0.18.0" target="_blank" rel="noopener noreferrer" class="">GitHub</a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator-update">Operator Update<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#operator-update" class="hash-link" aria-label="Direct link to Operator Update" title="Direct link to Operator Update" translate="no">​</a></h2>
<p>The operator was upgraded to deploy Shipwright Build v0.18.0 components.</p>
<p>In our definition, we have removed the dependency on the cert-manager and Tekton Pipelines. The reason we looked at this was that cert-manager deprecated their operator and does not provide updates anymore. For cert-manager, you now have to use another installation method. See <a href="https://cert-manager.io/docs/installation/" target="_blank" rel="noopener noreferrer" class="">their installation instructions for your options</a>.</p>
<p>To stay consistent, we also removed our other dependency on Tekton Pipelines. You may still deploy Tekton Pipelines using the operator, but you can now also chose a different installation method.</p>
<p>See the operator release notes on <a href="https://github.com/shipwright-io/operator/releases/tag/v0.18.0" target="_blank" rel="noopener noreferrer" class="">GitHub</a> for details.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v1.6.0:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://infra.tekton.dev/tekton-releases/pipeline/previous/v1.6.0/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.18.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.18.0/release.yaml --server-side</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.18.0/hack/setup-webhook-cert.sh | bash</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.18.0/sample-strategies.yaml --server-side</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.18.0/shp_0.18.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.18.0/shp_0.18.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.18.0/shp_0.18.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.18-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first ensure the operator v0.18.0 is installed and running on your cluster. You can follow the instructions on <a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.17 Is Here!]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.17-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.17-is-here</guid>
            <pubDate>Tue, 02 Sep 2025 19:20:35 GMT</pubDate>
            <description><![CDATA[Shipwright v0.17 release announcement with new features, fixes, and deprecations.]]></description>
            <content:encoded><![CDATA[<p>We are excited to announce the release of Shipwright v0.17.0! This release brings a small set of
new features, important fixes, and miscellaneous updates that enhance the Shipwright experience.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-updates">Build Updates<a href="https://shipwright.io/blog/shipwright-v0.17-is-here#build-updates" class="hash-link" aria-label="Direct link to Build Updates" title="Direct link to Build Updates" translate="no">​</a></h2>
<p>In this release, we introduced a significant change to the <code>status</code> API for <code>BuildRun</code> objects.
Status will now include an <code>executor</code> field indicating the name and <em>kind</em> of object used to
execute the build. The <code>taskRunName</code> status field is officially deprecated, but will remain
populated. In the future, this API change will let us use other Kubernetes objects to manage the
build execution, such as Tekton <a href="https://tekton.dev/docs/pipelines/pipelineruns/" target="_blank" rel="noopener noreferrer" class=""><code>PipelineRuns</code></a>,
<a href="https://argo-workflows.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="">Argo Workflows</a>, and even plain Kubernetes Pods.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">x53sd</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">executor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> TaskRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">x53sd</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">taskrun</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">43z3f</span><br></span></code></pre></div></div>
<p>We also fixed the volume API for <code>Build</code> and <code>BuildRun</code> objects, where empty strings were
incorrectly required for <code>VolumeSource</code> fields. This is now marked optional and can be left empty.</p>
<p>The Build project updated is containers to use <a href="https://www.redhat.com/en/blog/introducing-red-hat-universal-base-image" target="_blank" rel="noopener noreferrer" class="">UBI 10</a>.
This ensures we use the latest set of RHEL features in our builds, particularly for dependencies
like git.</p>
<p>Finally, we have updated Build to compile with Go 1.24 and utilize the Tekton v1.3 APIs. With this
change, the minimum supported Kubernetes version is now v1.31.0. The minimum supported Tekton
version is now v0.65.0.</p>
<p>Check out the full release notes on <a href="https://github.com/shipwright-io/build/releases/tag/v0.17.0" target="_blank" rel="noopener noreferrer" class="">GitHub</a>
for further details.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-updates">CLI Updates<a href="https://shipwright.io/blog/shipwright-v0.17-is-here#cli-updates" class="hash-link" aria-label="Direct link to CLI Updates" title="Direct link to CLI Updates" translate="no">​</a></h2>
<p>The CLI adds new commands to list and delete build strategies. To view the build strategies
available on the cluster, run the following command:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">shp clusterbuildstrategy list</span><br></span></code></pre></div></div>
<p>We also added a <code>--wide</code> option when listing <code>BuildRuns</code>. This lets you see expanded information
when viewing <code>BuildRuns</code> in the terminal:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp buildrun list --wide</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME                                    STATUS          AGE     SOURCE                                                  OUTPUT-IMAGE                                    BUILD-NAME              ELAPSED-TIME    SOURCE-ORIGIN</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">buildpack-nodejs-buildrun-bsnzp         Succeeded       58m     https://github.com/shipwright-io/sample-nodejs@main     quay.io/satyam16/sample-nodejs:latest           buildpack-nodejs-build  2m35s           Git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">buildpack-nodejs-buildrun-gb79r         Succeeded       6d      https://github.com/shipwright-io/sample-nodejs          quay.io/satyam16/sample-nodejs:latest           buildpack-nodejs-build  1m26s           Git</span><br></span></code></pre></div></div>
<p>Finally, we fixed two important bugs related to the streaming of local source code to Shipwright.
The command line should no longer panic if the referenced Build object does not have source
information set, nor should the build fail due to file permission issues on the uploaded source
code.</p>
<p>See the CLI release notes on <a href="https://github.com/shipwright-io/cli/releases/tag/v0.17.0" target="_blank" rel="noopener noreferrer" class="">GitHub</a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator-updates">Operator Updates<a href="https://shipwright.io/blog/shipwright-v0.17-is-here#operator-updates" class="hash-link" aria-label="Direct link to Operator Updates" title="Direct link to Operator Updates" translate="no">​</a></h2>
<p>The operator was upgraded to deploy Shipwright Build v0.17.0 components. It also fixes a bug where
the operator reported itself "Ready" when the dependent Tekton Pipeline components were not ready.</p>
<p>See the operator release notes on <a href="https://github.com/shipwright-io/operator/releases/tag/v0.17.0" target="_blank" rel="noopener noreferrer" class="">GitHub</a>
for details.</p>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.16 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.16-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.16-is-here</guid>
            <pubDate>Mon, 16 Jun 2025 09:41:00 GMT</pubDate>
            <description><![CDATA[We are happy to announce the latest release of Shipwright's main projects - v0.16.0.]]></description>
            <content:encoded><![CDATA[<p>We are happy to announce the latest release of Shipwright's main projects - <code>v0.16.0</code>.
In this release, besides new features and fixes, we're excited to announce that we've launched
a brand new <a href="https://shipwright.io/" target="_blank" rel="noopener noreferrer" class="">website</a>! It's been redesigned from the ground up to better showcase the project,
make it easier to navigate, and help you find everything you need. Special thank you to <a href="https://github.com/rxinui" target="_blank" rel="noopener noreferrer" class="">@rxinui</a> for this core contribution!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-features">Key Features<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#key-features" class="hash-link" aria-label="Direct link to Key Features" title="Direct link to Key Features" translate="no">​</a></h2>
<p>Below are the key features in this release:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="improving-git-clone">Improving Git Clone<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#improving-git-clone" class="hash-link" aria-label="Direct link to Improving Git Clone" title="Direct link to Improving Git Clone" translate="no">​</a></h3>
<p>The <code>source.git.depth</code> was added to the <code>Build</code> resource to specify the depth of the Git history.
If not specified the default value is 1 which means that no history is cloned at all, being the
fastest way to clone a Git repository. Any value greater than 1 will create a clone with the specified depth.
For a full git history clone, depth must be set to 0.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="optimizing-controller-memory-footprint">Optimizing Controller Memory Footprint<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#optimizing-controller-memory-footprint" class="hash-link" aria-label="Direct link to Optimizing Controller Memory Footprint" title="Direct link to Optimizing Controller Memory Footprint" translate="no">​</a></h3>
<p>Improve the Shipwright controller's memory efficiency by restricting the manager cache to only TaskRuns and Pods associated with the controller. This is achieved by leveraging the <code>buildrun.shipwright.io/name</code> label to identify relevant resources. By narrowing the scope of what the manager caches, we significantly reduce memory usage.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-maintenance-update">CLI: Maintenance Update<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#cli-maintenance-update" class="hash-link" aria-label="Direct link to CLI: Maintenance Update" title="Direct link to CLI: Maintenance Update" translate="no">​</a></h3>
<p>The CLI was updated to support Build v0.16.0 APIs. Behind the scenes, this means it now uses the <code>v1beta1</code> API instead of <code>v1alpha1</code>. As a result, CLI operations are slightly faster, since they no longer go through the conversion webhook.</p>
<p>Additionally, two new flags have been introduced to support node scheduling and node selection capabilities:</p>
<ul>
<li class=""><code>--node-selector</code>: Sets the <code>.spec.nodeSelector</code> field for <code>Build</code> and <code>BuildRun</code> resources during creation.</li>
<li class=""><code>--scheduler-name</code>: Sets the <code>.spec.schedulerName</code> field for <code>Build</code> and <code>BuildRun</code> during both creation and execution.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator-builds-upgrade">Operator: Builds Upgrade<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#operator-builds-upgrade" class="hash-link" aria-label="Direct link to Operator: Builds Upgrade" title="Direct link to Operator: Builds Upgrade" translate="no">​</a></h3>
<p>The operator was updated to deploy Builds v0.16.0.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v1.0.0:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v1.0.0/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.16.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.16.0/release.yaml --server-side</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.16.0/hack/setup-webhook-cert.sh | bash</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.16.0/sample-strategies.yaml --server-side</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.16.0/shp_0.16.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.16.0/shp_0.16.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.16.0/shp_0.16.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.16-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first ensure the operator v0.16.0 is
installed and running on your cluster. You can follow the instructions on
<a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Shipwright build scheduler features]]></title>
            <link>https://shipwright.io/blog/shipwright-build-scheduler-features</link>
            <guid>https://shipwright.io/blog/shipwright-build-scheduler-features</guid>
            <pubDate>Tue, 20 May 2025 17:39:00 GMT</pubDate>
            <description><![CDATA[New Build Scheduler Features]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-build-scheduler-features">New Build Scheduler Features<a href="https://shipwright.io/blog/shipwright-build-scheduler-features#new-build-scheduler-features" class="hash-link" aria-label="Direct link to New Build Scheduler Features" title="Direct link to New Build Scheduler Features" translate="no">​</a></h2>
<p>A new set of build scheduling features introduced in <a class="" href="https://shipwright.io/blog/shipwright-v0.15-is-here">v0.15</a> allows users to specify node selectors, custom schedulers, and tolerations for builds.</p>
<p>These make it easier to schedule builds on clusters with nodes of multiple CPU architectures, use a scheduler that is tuned to a certain workflow, or just more general control of which nodes builds run on.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-flags-to-use-build-scheduler-features">CLI flags to use build scheduler features<a href="https://shipwright.io/blog/shipwright-build-scheduler-features#cli-flags-to-use-build-scheduler-features" class="hash-link" aria-label="Direct link to CLI flags to use build scheduler features" title="Direct link to CLI flags to use build scheduler features" translate="no">​</a></h3>
<p>With these features also comes new CLI flags (introduced in v0.16) that allow specifying nodeSelectors and custom schedulers on the command line when using <code>shp</code> with <code>Builds</code> or <code>BuildRuns</code>.</p>
<p>In the following commands, <code>--node-selector</code> and <code>--scheduler-name</code> sets these fields on the <code>Build</code> or <code>BuildRun</code> objects:</p>
<ul>
<li class=""><code>shp build create</code></li>
<li class=""><code>shp build run</code></li>
<li class=""><code>shp build upload</code></li>
<li class=""><code>shp buildrun create</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="example-with-shp-build-run-and---node-selector">Example with <code>shp build run</code> and <code>--node-selector</code><a href="https://shipwright.io/blog/shipwright-build-scheduler-features#example-with-shp-build-run-and---node-selector" class="hash-link" aria-label="Direct link to example-with-shp-build-run-and---node-selector" title="Direct link to example-with-shp-build-run-and---node-selector" translate="no">​</a></h3>
<p>We can specify a build to be scheduled to a node with certain labels by using a node selector. Here, we'll schedule a build to a node with an ARM CPU architecture. Starting with an example build:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build create test-golang-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --output-image=kind.local/test/test-golang-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --source-git-url=https://github.com/shipwright-io/sample-go \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --source-context-dir=docker-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --strategy-name=buildah-shipwright-managed-push</span><br></span></code></pre></div></div>
<p>We'll run the build and specify the arm64 architecture in the node selector flag:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build run test-golang-build --node-selector=kubernetes.io/arch=arm64</span><br></span></code></pre></div></div>
<p>and see that the created BuildRun now has a nodeSelector specified and has been scheduled on the arm64 node:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">creationTimestamp</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2025-05-20T17:27:01Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">generateName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">generation</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">labels</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">build.shipwright.io/generation</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">build.shipwright.io/name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">glghq</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">namespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">resourceVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"31512392"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">uid</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 19f02c99</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">1d24</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">44c0</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">a5f9</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">ab544fdf55ae</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">build</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">nodeSelector</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">kubernetes.io/arch</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> arm64</span><br></span></code></pre></div></div>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl get pod test-golang-build-glghq-tfhnn-pod -o jsonpath='{.spec.nodeName} {.spec.nodeSelector}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">arm-node.compute.internal {"kubernetes.io/arch":"arm64"}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl get node arm-node.compute.internal -o jsonpath='{.metadata.labels.kubernetes\.io/arch}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">arm64</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="example-with-shp-build-create-and---scheduler-name">Example with <code>shp build create</code> and <code>--scheduler-name</code><a href="https://shipwright.io/blog/shipwright-build-scheduler-features#example-with-shp-build-create-and---scheduler-name" class="hash-link" aria-label="Direct link to example-with-shp-build-create-and---scheduler-name" title="Direct link to example-with-shp-build-create-and---scheduler-name" translate="no">​</a></h3>
<p>This time we'll specify a scheduler name <code>test-scheduler</code> that is assumed to be a custom scheduler that has been deployed to the cluster already.</p>
<p>Instead of specifying these options when running the build, we can also specify them when creating the build:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build create test-golang-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --output-image=kind.local/test/test-golang-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --source-git-url=https://github.com/shipwright-io/sample-go \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --source-context-dir=docker-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --strategy-name=buildah-shipwright-managed-push \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --scheduler-name=test-scheduler</span><br></span></code></pre></div></div>
<p>and see that the scheduler name appears in the Build yaml:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">creationTimestamp</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2025-05-20T17:49:07Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">generation</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">namespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">resourceVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"31518385"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">uid</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> bd2333fb</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">71eb</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">4228</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">bc5f</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">5a466032fcc5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> kind.local/test/test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">schedulerName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">scheduler</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">source</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">contextDir</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> docker</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">git</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">io/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">go</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">strategy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ClusterBuildStrategy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">managed</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">push</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">message</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> all validations succeeded</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">reason</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Succeeded</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">registered</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"True"</span><br></span></code></pre></div></div>
<p>After running the build with <code>shp build run test-golang-build</code>, we see that the schedulerName got picked up by the build pod:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl get pods test-golang-build-j9vbd-qr9cr-pod -o jsonpath='{.spec.schedulerName}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test-scheduler</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="example-with-setting-tolerations-on-a-buildrun">Example with setting tolerations on a <code>BuildRun</code><a href="https://shipwright.io/blog/shipwright-build-scheduler-features#example-with-setting-tolerations-on-a-buildrun" class="hash-link" aria-label="Direct link to example-with-setting-tolerations-on-a-buildrun" title="Direct link to example-with-setting-tolerations-on-a-buildrun" translate="no">​</a></h3>
<p>We'll start with the same example build as above:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build create test-golang-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --output-image=kind.local/test/test-golang-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --source-git-url=https://github.com/shipwright-io/sample-go \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --source-context-dir=docker-build \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  --strategy-name=buildah-shipwright-managed-push</span><br></span></code></pre></div></div>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">creationTimestamp</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2025-05-20T18:29:43Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">generation</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">namespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">resourceVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"31529978"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">uid</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> f393de53</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">e389</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">4e25</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">a29a</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">a434505bd82e</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> kind.local/test/test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">source</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">contextDir</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> docker</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">git</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">io/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">go</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">strategy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ClusterBuildStrategy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">managed</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">push</span><br></span></code></pre></div></div>
<p>In this example we have a three node cluster, so let's taint all of the nodes with <code>test-key</code> and <code>test-value</code>. This will prevent any pod from scheduling on these nodes unless it tolerates this taint:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl get nodes -o name</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">node/test-node-1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">node/test-node-2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">node/test-node-3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl taint nodes test-node-1 test-key=test-value:NoSchedule</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">node/test-node-1 tainted</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl taint nodes test-node-2 test-key=test-value:NoSchedule</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">node/test-node-2 tainted</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl taint nodes test-node-3 test-key=test-value:NoSchedule</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">node/test-node-3 tainted</span><br></span></code></pre></div></div>
<p>We see that if we create a BuildRun now, it will fail to schedule:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build run test-golang-build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl get events</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">LAST SEEN   TYPE      REASON             OBJECT                                  MESSAGE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2m54s       Normal    Pending            taskrun/test-golang-build-bqw9s-hbkds   pod status "PodScheduled":"False"; message: "0/3 nodes are available: 3 node(s) had untolerated taint {test-key: test-value}. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling."</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span></code></pre></div></div>
<p>Let's patch the Build with the following toleration in order to have it tolerate the node taint:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">tolerations</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">key</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test-key"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">operator</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Equal"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">value</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test-value"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">effect</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"NoSchedule"</span><br></span></code></pre></div></div>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl patch Build test-golang-build --type=merge -p '{"spec":{"tolerations":[{"key":"test-key","operator":"Equal","value":"test-value"}]}}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build run test-golang-build</span><br></span></code></pre></div></div>
<p>Now we see that the build is successfully scheduled:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl get events</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">LAST SEEN   TYPE      REASON             OBJECT                                  MESSAGE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">109s        Normal    Scheduled          pod/test-golang-build-k7zc4-492d2-pod   Successfully assigned default/test-golang-build-k7zc4-492d2-pod to ip-10-0-2-69.us-east-2.compute.internal</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="conclusion">Conclusion<a href="https://shipwright.io/blog/shipwright-build-scheduler-features#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" translate="no">​</a></h3>
<p>Shipwright's new build scheduling options make it much easier to control where builds get placed in the cluster and give more options to those who are operating in multi-arch environments or with other constraints.</p>]]></content:encoded>
            <category>shipwright</category>
            <category>scheduling</category>
            <category>multi-arch</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.15 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.15-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.15-is-here</guid>
            <pubDate>Mon, 03 Mar 2025 20:20:41 GMT</pubDate>
            <description><![CDATA[We are happy to announce the latest release of Shipwright's main projects - v0.15.z.]]></description>
            <content:encoded><![CDATA[<p>We are happy to announce the latest release of Shipwright's main projects - <code>v0.15.z</code>.
You may have noticed the usual ".0" in the version has been replaced with a ".z" - more on this in
a minute!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-features">Key Features<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#key-features" class="hash-link" aria-label="Direct link to Key Features" title="Direct link to Key Features" translate="no">​</a></h2>
<p>Below are the key features in this release:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-more-control-for-node-scheduling">Build: More Control for Node Scheduling<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#build-more-control-for-node-scheduling" class="hash-link" aria-label="Direct link to Build: More Control for Node Scheduling" title="Direct link to Build: More Control for Node Scheduling" translate="no">​</a></h3>
<p>Builds v0.15 adds additional support for controlling which nodes a build can run on.
In addition to specifying a node selector (introduced in <a class="" href="https://shipwright.io/blog/shipwright-v0.14.0-is-here">v0.14</a>), builds can now tolerate node
taints and instruct Kubernetes to use a custom pod scheduler. The latter feature can be used
with new projects like <a href="https://volcano.sh/en/" target="_blank" rel="noopener noreferrer" class="">Volcano</a>, which optimizes pod scheduling for batch
workloads.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-maintenance-update">CLI: Maintenance Update<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#cli-maintenance-update" class="hash-link" aria-label="Direct link to CLI: Maintenance Update" title="Direct link to CLI: Maintenance Update" translate="no">​</a></h3>
<p>The CLI was updated to support Build v0.15.0 APIs.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator-builds-upgrade">Operator: Builds Upgrade<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#operator-builds-upgrade" class="hash-link" aria-label="Direct link to Operator: Builds Upgrade" title="Direct link to Operator: Builds Upgrade" translate="no">​</a></h3>
<p>The operator was updated to deploy Builds v0.15.2.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v0.68.0:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.68.0/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.15.2 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.15.2/release.yaml --server-side</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.15.2/hack/setup-webhook-cert.sh | bash</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.15.2/sample-strategies.yaml --server-side</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.15.0/shp_0.15.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.15.0/shp_0.15.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.15.0/shp_0.15.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first ensure the operator v0.15.2 is
installed and running on your cluster. You can follow the instructions on
<a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-about-that-z">What About That .z?<a href="https://shipwright.io/blog/shipwright-v0.15-is-here#what-about-that-z" class="hash-link" aria-label="Direct link to What About That .z?" title="Direct link to What About That .z?" translate="no">​</a></h2>
<p>Since v0.14.0 was released, we have done a lot of work behind the scenes to automate Shipwright's
release process and security posture. Part of this includes a set of
<a href="https://github.com/shipwright-io/build/blob/main/.github/workflows/report-release-vulnerabilities.yaml" target="_blank" rel="noopener noreferrer" class="">nightly GitHub Actions</a>
that scan our container images for vulnerabilities at the code and operating system level.
This process covers our most recent release as well as the nightly builds that come out of the
<code>main</code> branch.</p>
<p>Less than a day after Builds v0.15.0 was released, vulnerabilties in the <code>golang.org/x/crypto</code>
and <code>golang.org/x/oauth2</code> packages were disclosed. These were picked up by our nightly automation,
which filed a <a href="https://github.com/shipwright-io/build/issues/1810" target="_blank" rel="noopener noreferrer" class="">GitHub issue</a> notifying the
community of the problem. The maintainers quickly sprung into action, submitting pull requests to
patch the vulnerable code. The next night our automation detected these vulnerabilities were fixed,
and drafted a security patch release.</p>
<p>Two days later, we patched the Build project <a href="https://github.com/shipwright-io/build/issues/1817" target="_blank" rel="noopener noreferrer" class="">all over again</a>.
All this happened as the <code>cli</code> and <code>operator</code> projects were preparing releases of their own.</p>
<p>Special thank you to <a href="https://github.com/SaschaSchwarze0" target="_blank" rel="noopener noreferrer" class="">@SaschaSchwarze0</a> for not only fixing
these vulnerabilties, but also building much of the workflows that automate these security
updates. Bravo!</p>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.14.0 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.14.0-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.14.0-is-here</guid>
            <pubDate>Thu, 14 Nov 2024 12:00:00 GMT</pubDate>
            <description><![CDATA[Update 2025-01-07: added Operator installation instructions]]></description>
            <content:encoded><![CDATA[<p><em>Update 2025-01-07: added Operator installation instructions</em></p>
<p>We are happy to announce the v0.14.0 release of Shipwright. This is our first release since we have joined the <a href="https://www.cncf.io/projects/shipwright/" target="_blank" rel="noopener noreferrer" class="">Cloud Native Computing Foundation (CNCF)</a> as a sandbox project.</p>
<p>In this release, we have put together some nice features:</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="features">Features<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vulnerability-scanning">Vulnerability Scanning<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#vulnerability-scanning" class="hash-link" aria-label="Direct link to Vulnerability Scanning" title="Direct link to Vulnerability Scanning" translate="no">​</a></h3>
<p>Keeping your environments secure is key these days. For container images, scanning them is widely adopted. Shipwright now performs a shift left of those scans by incorporating image scanning into the image build itself. We'll ensure that a vulnerable image never makes it into your container registry (though, you'd still have to re-scan it regularly to determine when it becomes vulnerable). This is a great safeguard for example against base images you consume in your Dockerfile that suddenly are not updated anymore.</p>
<p>You can read more about it in the separate blog post <a class="" href="https://shipwright.io/blog/building-secure-container-images-with-shipwright">Building Secure Container images with Shipwright</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="parameters-in-the-cli">Parameters in the CLI<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#parameters-in-the-cli" class="hash-link" aria-label="Direct link to Parameters in the CLI" title="Direct link to Parameters in the CLI" translate="no">​</a></h3>
<p>The Shipwright CLI finally received the first support for <a class="" href="https://shipwright.io/docs/build/#defining-paramvalues">build parameters</a>. You can use the <code>--param-value</code> argument to provide values for strategy parameters such as the Go version and Go flags in our <a href="https://github.com/shipwright-io/build/blob/v0.14.0/samples/v1beta1/buildstrategy/ko/buildstrategy_ko_cr.yaml#L8-L13" target="_blank" rel="noopener noreferrer" class="">ko sample build strategy</a> like this: <code>shp build create my-app --param-value go-version=1.23 --param-value go-flags=-mod=vendor</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-smaller-but-still-nice-things">The smaller but still nice things<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#the-smaller-but-still-nice-things" class="hash-link" aria-label="Direct link to The smaller but still nice things" title="Direct link to The smaller but still nice things" translate="no">​</a></h3>
<p>Often the small changes are what help you, here are some:</p>
<ul>
<li class="">If a step in your BuildRun goes out of memory, then it is now easier to determine that as the BuildRun status will have <code>StepOutOfMemory</code> as reason.</li>
<li class="">A <a href="https://github.com/shipwright-io/build/blob/v0.14.0/samples/v1beta1/buildstrategy/multiarch-native-buildah/buildstrategy_multiarch_native_buildah_cr.yaml" target="_blank" rel="noopener noreferrer" class="">new sample build strategy</a> has been added which orchestrates a multi-arch build using Kubernetes Jobs. See <a class="" href="https://shipwright.io/docs/build/buildstrategies#multi-arch-native-buildah">our documentation</a> for more information.</li>
<li class="">We started to implement node selection properties on Builds and BuildRuns with <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector" target="_blank" rel="noopener noreferrer" class="">node selector support</a>. Tolerations are planned to be added in v0.15.</li>
<li class="">As usual, we have done our due diligence. DependaBot helped us to keep our dependencies secure. We are now building with Go 1.22. Kubernetes and Tekton dependencies have been updated. We are also in the process of establishing automation across our repositories that gives us a GitHub issue once our latest release becomes vulnerable. You'll probably see more patch releases in the future where we keep our release free of vulnerabilities.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v0.65.1:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.65.1/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.14.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.14.0/release.yaml --server-side</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.14.0/hack/setup-webhook-cert.sh | bash</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.14.0/sample-strategies.yaml --server-side</span><br></span></code></pre></div></div>
</li>
</ol>
<p>If you are a long-standing Shipwright user that started to use us on our Alpha API (before v0.13.0), then we recommend you to run a storage version migration. It will update the stored version of all Shipwright resources in your cluster to the Beta API to unnecessary invocations of our conversion webhook in the future.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.14.0/hack/storage-version-migration.sh | bash</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.14.0/cli_0.14.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.14.0/cli_0.14.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.14.0/cli_0.14.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.14.0-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first ensure the operator v0.14.0 is installed and running on your cluster. You can follow the instructions on <a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Building Secure Container images with Shipwright]]></title>
            <link>https://shipwright.io/blog/building-secure-container-images-with-shipwright</link>
            <guid>https://shipwright.io/blog/building-secure-container-images-with-shipwright</guid>
            <pubDate>Mon, 15 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Introduction]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="https://shipwright.io/blog/building-secure-container-images-with-shipwright#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h2>
<p>In the modern software development era, containers have become an essential tool for developers. They offer a consistent environment for applications to run, making it easier to develop, test, and deploy software across different platforms. However, like any other technology, containers are not immune to security vulnerabilities. This is where vulnerability scanning for container images becomes crucial.
In this blog, we will discuss how to run vulnerability scanning on container images with <a href="https://shipwright.io/" target="_blank" rel="noopener noreferrer" class="">Shipwright</a> while building those images.</p>
<p>Before jumping into this feature, let's explain what Shipwright is and why vulnerability scanning is important.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-shipwright">What is Shipwright<a href="https://shipwright.io/blog/building-secure-container-images-with-shipwright#what-is-shipwright" class="hash-link" aria-label="Direct link to What is Shipwright" title="Direct link to What is Shipwright" translate="no">​</a></h2>
<p><a href="https://shipwright.io/" target="_blank" rel="noopener noreferrer" class="">Shipwright</a> is an open-source framework designed to facilitate the building of container images directly within Kubernetes environments. It aims to streamline the development and deployment process by providing a native Kubernetes solution for creating container images from source code.
Shipwright supports multiple build strategies and tools, such as Kaniko, Paketo Buildpacks, Ko, Buildkit and Buildah, providing flexibility and extensibility to meet various application needs. This Kubernetes-native solution helps ensure that container images are built efficiently and securely, leveraging the strengths of the Kubernetes ecosystem.</p>
<p>Shipwright consists of four core components:</p>
<ol>
<li class=""><strong>Build</strong> - defines <strong>what</strong> source code are you trying to build from, and <strong>where</strong> the resulting container image should be publish(the what and where?).</li>
<li class=""><strong>BuildRun</strong> - defines the <strong>when</strong> to trigger the building mechanism, telling the Kubernetes cluster when to build your application(the when?).</li>
<li class=""><strong>BuildStrategy and ClusterBuildStrategy</strong> - defines <strong>how</strong> your application is assembled and which build tool to use(how to build?).</li>
</ol>
<p>You can learn more by visiting this <a class="" href="https://shipwright.io/blog/introducing-shipwright-part-2#the-build-apis">link</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-is-vulnerability-scanning-important">Why is Vulnerability Scanning Important?<a href="https://shipwright.io/blog/building-secure-container-images-with-shipwright#why-is-vulnerability-scanning-important" class="hash-link" aria-label="Direct link to Why is Vulnerability Scanning Important?" title="Direct link to Why is Vulnerability Scanning Important?" translate="no">​</a></h2>
<p>Vulnerability scanning for container images involves examining the image for known security vulnerabilities. This is typically done using automated tools that compare the contents of the image against a database of known vulnerabilities. The key reasons for Vulnerability Scanning are:</p>
<ul>
<li class=""><strong>Security</strong>: Containers often include third-party libraries and dependencies, which might have known vulnerabilities. If these vulnerabilities are exploited, they can lead to data breaches, unauthorized access, and other security incidents.</li>
<li class=""><strong>Compliance</strong>: Many industries have regulatory requirements that mandate regular security assessments, including vulnerability scanning. Ensuring your container images are free from known vulnerabilities helps in meeting these compliance standards.</li>
<li class=""><strong>Stability</strong>: Vulnerabilities can also impact the stability and performance of your applications. By identifying and fixing these issues early, you can maintain the reliability of your software.</li>
</ul>
<p>There are many popular tools available for vulnerability scanning of container images, such as Clair, Trivy, Aqua Security, and Snyk.</p>
<p>In Shipwright, we use Trivy under the covers for vulnerability scanning, our rational for choosing this tool can be found in our <a href="https://github.com/shipwright-io/community/blob/main/ships/0033-build-output-vulnerability-scanning.md" target="_blank" rel="noopener noreferrer" class="">SHIP-0033</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vulnerability-scanning-in-shipwright">Vulnerability Scanning in Shipwright<a href="https://shipwright.io/blog/building-secure-container-images-with-shipwright#vulnerability-scanning-in-shipwright" class="hash-link" aria-label="Direct link to Vulnerability Scanning in Shipwright" title="Direct link to Vulnerability Scanning in Shipwright" translate="no">​</a></h2>
<p>Before we dive in how it works, lets explore the features offered by Shipwright for vulnerability scanning of container builds :</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">vulnerabilityScan</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">enabled</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">failOnFinding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">#image won't be push to registry if set to true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">ignore</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">issues</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> CVE</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">2022</span><span class="token punctuation" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">12345</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">#specify list of cve to be ignored</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">severity</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Low </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> Medium </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> High </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> Critical</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">unfixed</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">#ignores the unfixed vulnerabilities</span><br></span></code></pre></div></div>
<p><strong>Configuration Options</strong></p>
<ul>
<li class=""><code>vulnerabilityScan.enabled</code>: Specify whether to run vulnerability scan for image. The supported values are true and false.</li>
<li class=""><code>vulnerabilityScan.failOnFinding</code>: Indicates whether to fail the build run if the vulnerability scan results in vulnerabilities. The supported values are true and false. This field is optional and false by default.</li>
<li class=""><code>vulnerabilityScan.ignore.issues</code>: References the security issues to be ignored in vulnerability scan</li>
<li class=""><code>vulnerabilityScan.ignore.severity</code>: Denotes the severity levels of security issues to be ignored, valid values are:<!-- -->
<ul>
<li class="">low: it will exclude low severity vulnerabilities, displaying only medium, high and critical vulnerabilities.</li>
<li class="">medium: it will exclude low and medium severity vulnerabilities, displaying only high and critical vulnerabilities.</li>
<li class="">high: it will exclude low, medium and high severity vulnerabilities, displaying only the critical vulnerabilities.</li>
</ul>
</li>
<li class=""><code>vulnerabilityScan.ignore.unfixed</code>: Indicates to ignore vulnerabilities for which no fix exists. The supported types are true and false.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lets-dive-right-in">Lets dive right in<a href="https://shipwright.io/blog/building-secure-container-images-with-shipwright#lets-dive-right-in" class="hash-link" aria-label="Direct link to Lets dive right in" title="Direct link to Lets dive right in" translate="no">​</a></h2>
<p>Now, let's see vulnerability scanning for a container image with Shipwright in action.
If you want to try out in kind cluster, follow the steps from <a href="https://github.com/shipwright-io/build?tab=readme-ov-file#try-it" target="_blank" rel="noopener noreferrer" class="">this</a> section until you create the push secret.
As a next step, create a build object with vulnerability scanning enabled, replacing <code>REGISTRY_ORG</code> with the registry username your push-secret have access to:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">REGISTRY_ORG=&lt;your_registry_org</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> kubectl apply </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">f </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">source</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">git</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">io/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">go</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">contextDir</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> docker</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">strategy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">managed</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">push</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ClusterBuildStrategy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">paramValues</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> dockerfile</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">value</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Dockerfile</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> docker.io/$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">REGISTRY_ORG</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">pushSecret</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> push</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">secret</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">vulnerabilityScan</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">enabled</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">failOnFinding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># if set to true, then the image won't be pushed to the registry</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span></code></pre></div></div>
<p>To view the Build which you just created:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl get builds</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME                   REGISTERED   REASON      BUILDSTRATEGYKIND      BUILDSTRATEGYNAME                 CREATIONTIME</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">buildah-golang-build   True         Succeeded   ClusterBuildStrategy   buildah-shipwright-managed-push   72s</span><br></span></code></pre></div></div>
<p>Now submit your buildrun</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">cat &lt;&lt;EOF </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"> kubectl create </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">f </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">generateName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">build</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EOF</span><br></span></code></pre></div></div>
<p>Wait until your BuildRun is completed and then you can view it as follows:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ kubectl get buildruns</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME                            SUCCEEDED   REASON                 STARTTIME   COMPLETIONTIME</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">buildah-golang-buildrun-s9gsh   False       VulnerabilitiesFound   2m54s       98s</span><br></span></code></pre></div></div>
<p>Here, you can see that the buildrun failed with reason <code>VulnerabilitiesFound</code> and it will not push the image to the registry as the failOnFinding option is set to true.</p>
<p>And one can find the list of vulnerabilities in the build run under the <code>.status.output</code> path:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">creationTimestamp</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-07-08T08:03:18Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">generateName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">generation</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">labels</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">build.shipwright.io/generation</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">build.shipwright.io/name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">s9gsh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">namespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">resourceVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"19926"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">uid</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> f3c558e9</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">e027</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">4f59</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">9fdc</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">438a31c6de11</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">build</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">buildSpec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> docker.io/karanjmu92/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">pushSecret</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> push</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">secret</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">vulnerabilityScan</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">enabled</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">failOnFinding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">paramValues</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> dockerfile</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">value</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Dockerfile</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">source</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">contextDir</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> docker</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">git</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">io/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">go</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">strategy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ClusterBuildStrategy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">managed</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">push</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">completionTime</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-07-08T08:04:34Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">conditions</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">lastTransitionTime</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-07-08T08:04:34Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">message</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Vulnerabilities have been found in the image which can be seen in the</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      buildrun status. For detailed information</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">see kubectl </span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">namespace default logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">s9gsh</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">w488m</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">pod </span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">container=step</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">image</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">processing</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">reason</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> VulnerabilitiesFound</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"False"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Succeeded</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">failureDetails</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">location</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">container</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> step</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">image</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">processing</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">pod</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">s9gsh</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">w488m</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">pod</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">vulnerabilities</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">id</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> CVE</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">2023</span><span class="token punctuation" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">24538</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">severity</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> critical</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">id</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> CVE</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">2023</span><span class="token punctuation" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">24540</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">severity</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> critical</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">id</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> CVE</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">2024</span><span class="token punctuation" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">24791</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">severity</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> medium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">source</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">git</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">branchName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> main</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">commitAuthor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> OpenShift Merge Robot</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">commitSha</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 96afb4108fba22e91f42168d8babb5562ac8e5bb</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">timestamp</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2023-08-10T15:24:45Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">startTime</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-07-08T08:03:18Z"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">taskRunName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildah</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">golang</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">s9gsh</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">w488m</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="conclusion">Conclusion<a href="https://shipwright.io/blog/building-secure-container-images-with-shipwright#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" translate="no">​</a></h2>
<p>Shipwright offers a robust and flexible solution for building container images within Kubernetes environments. By integrating vulnerability scanning directly into the build process, Shipwright ensures that container images are secure and compliant with Industry Standards and gets closer to Supply Chain Security Best Practices.</p>]]></content:encoded>
            <category>shipwright</category>
            <category>security</category>
            <category>vulnerability-scanning</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.13.0 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.13.0-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.13.0-is-here</guid>
            <pubDate>Wed, 27 Mar 2024 16:00:01 GMT</pubDate>
            <description><![CDATA[Update 2024-07-09: added Operator installation instructions]]></description>
            <content:encoded><![CDATA[<p><em>Update 2024-07-09: added Operator installation instructions</em></p>
<p>After months of diligent work, just in time for <a href="https://cd.foundation/event/cdcon-2024/" target="_blank" rel="noopener noreferrer" class="">cdCon 2024</a>, we are releasing our <code>v0.13.0</code> release. This significant milestone incorporates a bunch of enhancements, features and bug fixes. Here are the key highlights:</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="action-required">Action Required<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#action-required" class="hash-link" aria-label="Direct link to Action Required" title="Direct link to Action Required" translate="no">​</a></h2>
<blockquote>
<p>After upgrading from v0.12.0 to v0.13.0, you can run the following two commands to remove unnecessary permissions on the
shipwright-build-webhook: <code>kubectl delete crb shipwright-build-webhook &amp;&amp; kubectl delete cr shipwright-build-webhook</code></p>
</blockquote>
<blockquote>
<p>We switched our CRDs storage version to <code>v1beta1</code>. We strongly advise users to migrate to our <code>v1beta1</code> API, as we intend to
deprecate <code>v1alpha1</code> in a future release. Note that the <code>v1alpha1</code> still served for all CRD's.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="features">Features<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build-output-timestamp">Build Output Timestamp<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#build-output-timestamp" class="hash-link" aria-label="Direct link to Build Output Timestamp" title="Direct link to Build Output Timestamp" translate="no">​</a></h3>
<p>SHIP <a href="https://github.com/shipwright-io/community/blob/main/ships/0037-build-output-timestamp.md" target="_blank" rel="noopener noreferrer" class="">0037</a> is now implemented. Users can make use of the Build <code>.spec.output.timestamp</code> to explicitly set the resulting container image timestamp.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="tekton-v1-api-adoption">Tekton v1 API Adoption<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#tekton-v1-api-adoption" class="hash-link" aria-label="Direct link to Tekton v1 API Adoption" title="Direct link to Tekton v1 API Adoption" translate="no">​</a></h3>
<p>Our Shipwright controllers now use the Tekton v1 API when working with <code>TaskRuns</code>. See <a href="https://github.com/shipwright-io/build/pull/1435" target="_blank" rel="noopener noreferrer" class="">PR</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-changes">API Changes<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#api-changes" class="hash-link" aria-label="Direct link to API Changes" title="Direct link to API Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="switch-storage-version-to-v1beta1">Switch Storage Version to v1beta1<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#switch-storage-version-to-v1beta1" class="hash-link" aria-label="Direct link to Switch Storage Version to v1beta1" title="Direct link to Switch Storage Version to v1beta1" translate="no">​</a></h3>
<p>The storage version for all CRD's has been switched to <code>v1beta1</code>. Concurrently, our Shipwright controllers have been updated to use this updated API version. The <code>v1alpha1</code> version continues to be supported.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="beta-api-changes">Beta API Changes<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#beta-api-changes" class="hash-link" aria-label="Direct link to Beta API Changes" title="Direct link to Beta API Changes" translate="no">​</a></h3>
<p>We've implemented minor adjustments to the existing <code>v1beta1</code> API for the sake of consistency, incorporating feedback gathered from the <code>v0.12.0</code> release. These are:</p>
<ul>
<li class="">Renaming certain Go Types, such as <code>build.Spec.Source.GitSource</code> to <code>build.Spec.Source.Git</code>, aligning them with their respective JSON tags.</li>
<li class="">Designating <code>build.Spec.Source.Type</code> and <code>buildRun.Spec.Source.Type</code> as mandatory, addressing usability concerns raised by users.</li>
<li class="">We made <code>build.Spec.Source</code> optional. Enabling the definition of a Build without any source. This feature proves valuable
particularly when executing a Build only with local source.</li>
<li class="">Requiring <code>build.spec.source.git.url</code> upon the specification of <code>build.spec.source.git</code>.</li>
</ul>
<p>Further details can be found in <a href="https://github.com/shipwright-io/build/pull/1504" target="_blank" rel="noopener noreferrer" class="">PR 1504</a> and <a href="https://github.com/shipwright-io/build/pull/1441" target="_blank" rel="noopener noreferrer" class="">PR 1441</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bugs">Bugs<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#bugs" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="conversion-webhook">Conversion Webhook<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#conversion-webhook" class="hash-link" aria-label="Direct link to Conversion Webhook" title="Direct link to Conversion Webhook" translate="no">​</a></h3>
<p>As the usage of the webhook increased over the last months, we've made enhancements to address certain gaps:</p>
<ul>
<li class="">Previously, there was an issue with the proper conversion of BuildRuns from v1alpha1 to v1beta1 when a generated service account was utilized. This has been resolved.</li>
<li class="">Additionally, a bug was identified where patching a completed v1beta1 BuildRun would inadvertently remove its status. This issue has been resolved.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ociartifacts">OCIArtifacts<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#ociartifacts" class="hash-link" aria-label="Direct link to OCIArtifacts" title="Direct link to OCIArtifacts" translate="no">​</a></h3>
<p>When implementing prevention measures against path traversal during the extraction of an OCI artifact, we were too strict. We only needed to prevent /../ because this means to go one directory up. We still must allow <code>..</code> because a directory or file can contain two subsequent dots in its name. You can now use files and directories with two subsequent dots in its name when using an OCI artifact as source.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="builds">Builds<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#builds" class="hash-link" aria-label="Direct link to Builds" title="Direct link to Builds" translate="no">​</a></h3>
<p>When a Build with an unknown strategy kind is defined, the Build validation triggers. However, it was failing to update the Build status to <code>Failed</code>, resulting in an endless loop during reconciliation. This issue has been resolved.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="miscellaneous">Miscellaneous<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#miscellaneous" class="hash-link" aria-label="Direct link to Miscellaneous" title="Direct link to Miscellaneous" translate="no">​</a></h2>
<p>Dependabot updates play a crucial role in keeping our go dependencies current with CVE's. Building upon this, we've recently implemented a similar automation to streamline the process of updating our CI Github actions, see <a href="https://github.com/shipwright-io/build/pull/1516" target="_blank" rel="noopener noreferrer" class="">PR 1516</a>.</p>
<p>Furthermore, we have been consistently updating all of our Build tools, such as <code>ko</code> and <code>buildpacks</code>, using our custom automation, ensuring that our Strategies remain on the latest versions.</p>
<p>It's worth noting that our minimum supported Kubernetes version is now 1.27, while the minimum Tekton version is 0.50.*.</p>
<p>Additionally, Shipwright Build is now compiled with Go 1.21</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="docs">Docs<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#docs" class="hash-link" aria-label="Direct link to Docs" title="Direct link to Docs" translate="no">​</a></h2>
<p>Our general <a href="https://github.com/shipwright-io/build/blob/main/ROADMAP.md" target="_blank" rel="noopener noreferrer" class="">Roadmap</a> and <a href="https://github.com/shipwright-io/build/blob/main/ADOPTERS.md" target="_blank" rel="noopener noreferrer" class="">Adopters</a> doc has been updated.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v0.50.5:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.50.5/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.13.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.13.0/release.yaml --server-side</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.13.0/hack/setup-webhook-cert.sh | bash</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.13.0/sample-strategies.yaml --server-side</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.13.0/cli_0.13.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.13.0/cli_0.13.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.13.0/cli_0.13.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.13.0-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first ensure the operator v0.13.0 is installed and running on your cluster. You can follow the instructions on <a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Introducing Shipwright Beta API]]></title>
            <link>https://shipwright.io/blog/introducing-shipwright-beta-api</link>
            <guid>https://shipwright.io/blog/introducing-shipwright-beta-api</guid>
            <pubDate>Tue, 07 Nov 2023 20:00:00 GMT</pubDate>
            <description><![CDATA[About a year ago, we published a blog post]]></description>
            <content:encoded><![CDATA[<p>About a year ago, we published a blog <a class="" href="https://shipwright.io/blog/bringing-shipwright-to-beta-and-beyond">post</a>
in which we outline our vision and our values. Part of this vision was to advance
our API to enhance its simplicity and consistency, and to signal a higher level of maturity.</p>
<p>Today, as part of our release <em>v0.12.0</em>, we are introducing our <em>beta</em> API.
The <em>beta</em> API brings multiple changes as a result of accumulated experience operating
the <em>alpha</em> API and incorporating valuable user feedback.</p>
<p>With the introduction of the <em>beta</em> API, users can have confidence that our
core components have been battle-tested, and using our different features is
considered a safe practice.</p>
<p><em>We want to thank our community for their contributions and support in redefining this new API!</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="beta-api">Beta API<a href="https://shipwright.io/blog/introducing-shipwright-beta-api#beta-api" class="hash-link" aria-label="Direct link to Beta API" title="Direct link to Beta API" translate="no">​</a></h2>
<p>The <em>beta</em> API is available starting from the <em>v0.12.0</em> release. The release is available
across our <a href="https://github.com/shipwright-io/cli" target="_blank" rel="noopener noreferrer" class="">cli</a>, <a href="https://github.com/shipwright-io/operator" target="_blank" rel="noopener noreferrer" class="">operator</a> and <a href="https://github.com/shipwright-io/build" target="_blank" rel="noopener noreferrer" class="">build</a> repository.</p>
<p>Within the <em>v0.12.0</em> release, a conversion webhook has been introduced to ensure backward
compatibility between the <em>v1alpha1</em> and <em>v1beta1</em>.</p>
<p>We strongly encourage both current and future users to adopt the <em>beta</em> API to benefit from
its enhanced definition.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="migration-guidelines">Migration guidelines<a href="https://shipwright.io/blog/introducing-shipwright-beta-api#migration-guidelines" class="hash-link" aria-label="Direct link to Migration guidelines" title="Direct link to Migration guidelines" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecated-fields">Deprecated fields<a href="https://shipwright.io/blog/introducing-shipwright-beta-api#deprecated-fields" class="hash-link" aria-label="Direct link to Deprecated fields" title="Direct link to Deprecated fields" translate="no">​</a></h3>
<table><thead><tr><th>Resource</th><th>Field</th><th style="text-align:center">Alternative</th></tr></thead><tbody><tr><td>Build</td><td><code>.spec.sources</code></td><td style="text-align:center"><code>.spec.source</code></td></tr><tr><td>Build</td><td><code>.spec.dockerfile</code></td><td style="text-align:center"><code>spec.paramValues[]</code> with <code>dockerfile</code></td></tr><tr><td>Build</td><td><code>.spec.builder</code></td><td style="text-align:center">none</td></tr><tr><td>Build</td><td><code>.spec.volumes[].description</code></td><td style="text-align:center">none</td></tr><tr><td>BuildRun</td><td><code>.spec.serviceAccount.generate</code></td><td style="text-align:center"><code>.spec.serviceAccount</code> with <code>.generate</code></td></tr><tr><td>BuildRun</td><td><code>.spec.sources</code></td><td style="text-align:center"><code>.spec.source</code> only for <code>Local</code></td></tr><tr><td>BuildRun</td><td><code>.spec.volumes[].description</code></td><td style="text-align:center">none</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="changes-to-build-api-fields">Changes to Build API fields<a href="https://shipwright.io/blog/introducing-shipwright-beta-api#changes-to-build-api-fields" class="hash-link" aria-label="Direct link to Changes to Build API fields" title="Direct link to Changes to Build API fields" translate="no">​</a></h3>
<table><thead><tr><th>Old field</th><th style="text-align:center">New field</th></tr></thead><tbody><tr><td><code>.spec.source.url</code></td><td style="text-align:center"><code>.spec.source.git.url</code></td></tr><tr><td><code>.spec.source.bundleContainer</code></td><td style="text-align:center"><code>.spec.source.ociArtifact</code></td></tr><tr><td><code>.spec.sources</code> for <code>LocalCopy</code></td><td style="text-align:center"><code>.spec.source.local</code></td></tr><tr><td><code>.spec.source.credentials</code></td><td style="text-align:center"><code>.spec.source.git.cloneSecret</code> or <code>.spec.source.ociArtifact.pullSecret</code></td></tr><tr><td><code>.spec.output.credentials</code></td><td style="text-align:center"><code>.spec.output.pushSecret</code></td></tr></tbody></table>
<p>See this example of the Git source type:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># v1alpha1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">source</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">io/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">go</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">contextDir</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> docker</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">strategy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildkit</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ClusterBuildStrategy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> an</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">image</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># v1beta1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">source</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">git</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">io/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">go</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">contextDir</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> docker</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">strategy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildkit</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ClusterBuildStrategy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> an</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">image</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="changes-to-buildrun-api-fields">Changes to BuildRun API fields<a href="https://shipwright.io/blog/introducing-shipwright-beta-api#changes-to-buildrun-api-fields" class="hash-link" aria-label="Direct link to Changes to BuildRun API fields" title="Direct link to Changes to BuildRun API fields" translate="no">​</a></h3>
<table><thead><tr><th>Old field</th><th style="text-align:center">New field</th></tr></thead><tbody><tr><td><code>.spec.buildSpec</code></td><td style="text-align:center"><code>.spec.build.spec</code></td></tr><tr><td><code>.spec.buildRef</code></td><td style="text-align:center"><code>.spec.build.name</code></td></tr><tr><td><code>.spec.sources</code></td><td style="text-align:center"><code>.spec.source</code> only for <code>Local</code></td></tr><tr><td><code>.spec.serviceAccount.generate</code></td><td style="text-align:center"><code>.spec.serviceAccount</code> with <code>.generate</code></td></tr></tbody></table>
<p><em>Note: generated service accounts is a deprecated feature, and may be removed in a future release.</em></p>
<p>See example:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># v1alpha1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">buildRef</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">serviceAccount</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">generate</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># v1beta1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">build</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">serviceAccount</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">".generate"</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="changes-to-strategies-api-fields">Changes to Strategies API fields<a href="https://shipwright.io/blog/introducing-shipwright-beta-api#changes-to-strategies-api-fields" class="hash-link" aria-label="Direct link to Changes to Strategies API fields" title="Direct link to Changes to Strategies API fields" translate="no">​</a></h3>
<table><thead><tr><th>Old field</th><th style="text-align:center">New field</th></tr></thead><tbody><tr><td><code>.spec.buildSteps</code></td><td style="text-align:center"><code>.spec.steps</code></td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="references">References<a href="https://shipwright.io/blog/introducing-shipwright-beta-api#references" class="hash-link" aria-label="Direct link to References" title="Direct link to References" translate="no">​</a></h2>
<p>For more information, see <a href="https://github.com/shipwright-io/community/blob/main/ships/0035-beta-api-changes.md" target="_blank" rel="noopener noreferrer" class="">SHIP 0035</a>.</p>]]></content:encoded>
            <category>shipwright</category>
            <category>api</category>
            <category>beta</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.12.0 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.12.0-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.12.0-is-here</guid>
            <pubDate>Sun, 05 Nov 2023 16:00:01 GMT</pubDate>
            <description><![CDATA[Shipwright is back with the v0.12.0 release, moving our API from alpha to beta.]]></description>
            <content:encoded><![CDATA[<p>Shipwright is back with the v0.12.0 release, moving our API from <em>alpha</em> to <em>beta</em>.</p>
<p>Some key points to consider:</p>
<ul>
<li class="">Starting with the <em>v0.12.0</em> release, a conversion webhook is deployed to provide support for both <em>v1alpha1</em> and <em>v1beta1</em> API versions.</li>
<li class="">Users are encouraged to adopt the <em>v1beta1</em> API.</li>
<li class="">Support for <em>v1alpha1</em> will continue for some additional releases. Part of the <em>v1alpha1</em> API is already deprecated and not available in <em>v1beta1</em>.</li>
</ul>
<p>Please take a look at the following blog <a class="" href="https://shipwright.io/blog/introducing-shipwright-beta-api">post</a> to see some of our guidelines on moving your Shipwright Custom Resources from <em>alpha</em> to <em>beta</em>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.12.0-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.12.0-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v0.47.4:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.47.4/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.12.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.12.0/release.yaml --server-side</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --location https://raw.githubusercontent.com/shipwright-io/build/v0.12.0/hack/setup-webhook-cert.sh | bash</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply --filename https://github.com/shipwright-io/build/releases/download/v0.12.0/sample-strategies.yaml --server-side</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.12.0-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.12.0-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.12.0/cli_0.12.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.12.0-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.12.0/cli_0.12.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.12.0-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.12.0/cli_0.12.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.12.0-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first ensure the operator v0.12.0 is installed and running on your cluster. You can follow the instructions on <a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Hacktoberfest 2023]]></title>
            <link>https://shipwright.io/blog/hacktoberfest-2023</link>
            <guid>https://shipwright.io/blog/hacktoberfest-2023</guid>
            <pubDate>Sun, 01 Oct 2023 18:50:04 GMT</pubDate>
            <description><![CDATA[Shipwright is participating in Hacktoberfest 2023!]]></description>
            <content:encoded><![CDATA[<p>Shipwright is participating in <a href="https://hacktoberfest.com/" target="_blank" rel="noopener noreferrer" class="">Hacktoberfest 2023</a>!</p>
<p><img decoding="async" loading="lazy" alt="Hacktoberfest 2023" src="https://shipwright.io/assets/images/hacktoberfest2023-logo-898a44be495c0c40fc315ecc8845cc91.png" width="599" height="460" class="img_ev3q"></p>
<p>Join us this October to contribute to Shipwright and earn your Hacktoberfest rewards.
Check out our <a href="https://github.com/search?q=org%3Ashipwright-io+label%3Ahacktoberfest&amp;type=issues" target="_blank" rel="noopener noreferrer" class="">issues labeled <code>hacktoberfest</code></a> to get started.</p>]]></content:encoded>
            <category>shipwright</category>
            <category>community</category>
            <category>hacktoberfest</category>
        </item>
        <item>
            <title><![CDATA[Bringing Shipwright to Beta - and Beyond!]]></title>
            <link>https://shipwright.io/blog/bringing-shipwright-to-beta-and-beyond</link>
            <guid>https://shipwright.io/blog/bringing-shipwright-to-beta-and-beyond</guid>
            <pubDate>Tue, 25 Oct 2022 21:00:00 GMT</pubDate>
            <description><![CDATA[Recently, the Shipwright community came together to define a beta API for the]]></description>
            <content:encoded><![CDATA[<p>Recently, the Shipwright community came together to define a beta API for the
<a href="https://github.com/shipwright-io/build" target="_blank" rel="noopener noreferrer" class="">Build project</a> with stronger support
guarantees.
We have come a long way since our launch two years ago, as "a framework for
building container images on Kubernetes."
During the workshop, the community found itself coming back to a fundamental
question, "What is Shipwright?"
And more importantly, "What do we want Shipwright to be?"</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-should-shipwright-become">What Should Shipwright Become?<a href="https://shipwright.io/blog/bringing-shipwright-to-beta-and-beyond#what-should-shipwright-become" class="hash-link" aria-label="Direct link to What Should Shipwright Become?" title="Direct link to What Should Shipwright Become?" translate="no">​</a></h2>
<p>We concluded that Shipwright is and should remain a framework for building
container images.
Shipwright will continue to make it simple to build a container image from
source, using tools that are actively maintained by a community of experts.
Our separation of <a class="" href="https://shipwright.io/docs/build/buildstrategies">build strategy</a>
from build definition and execution will remain a cornerstone of the Shipwright
framework.</p>
<p>However, we realized that building the image is just the starting point to
delivering software on the cloud.
Software supply chain security is a topmost concern of teams large and small.
Artifacts like image scans, signatures,
<a href="https://www.cisa.gov/sbom" target="_blank" rel="noopener noreferrer" class="">software bill of materials</a>, and
<a href="https://in-toto.io/in-toto/" target="_blank" rel="noopener noreferrer" class="">provenance</a> are needed to build modern software
for the cloud.
Shipwright can, and should, rise up to meet these demands.</p>
<p>We also decided that Shipwright will continue to run on cloud-native
infrastructure, powered by <a href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer" class="">Kubernetes</a> and
<a href="https://tekton.dev/" target="_blank" rel="noopener noreferrer" class="">Tekton</a>.
We can go further, though, and plug Shipwright into the vast cloud-native
ecosystem, through integrations with <a href="https://cdevents.dev/" target="_blank" rel="noopener noreferrer" class="">CDEvents</a>,
<a href="https://argo-cd.readthedocs.io/en/stable/" target="_blank" rel="noopener noreferrer" class="">ArgoCD</a>, and more.
Shipwright is just getting started in this effort through the
<a href="https://github.com/shipwright-io/triggers" target="_blank" rel="noopener noreferrer" class="">Triggers</a> and
<a href="https://github.com/shipwright-io/image" target="_blank" rel="noopener noreferrer" class="">Image</a> sub-projects.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="core-values">Core Values<a href="https://shipwright.io/blog/bringing-shipwright-to-beta-and-beyond#core-values" class="hash-link" aria-label="Direct link to Core Values" title="Direct link to Core Values" translate="no">​</a></h2>
<p>Over the past two years, the Shipwright community has coalesced around three
core values: simplicity, flexibility, and security.</p>
<p>Simplicity means that we provide an experience that is intuitive and
consistent.
It also means that we shouldn't be afraid to take an opinionated stance on
common tasks, or features that we want to add to the project.
We discovered in the Beta API workshop areas where our APIs were not consistent
or intuitive, and we identified changes to fix these problem areas.
These include single sources for builds and maintaining our opinionated steps
to obtain source code.</p>
<p>Flexibility means that we provide space for teams to bend Shipwright to fit
their needs.
This started with the build strategy model itself, which we are keeping at the
core of the API.
We continued with the Parameters API, which provides avenues for customization
between build strategies and build executions.
We also took steps in our beta workshop to ensure our API is tool agnostic,
such that we can help grow the ecosystem of build tools.
This meant that some fields that were only used by specific build tools were
dropped.</p>
<p>Lastly, Shipwright aims to meet the security needs for cloud-native
applications.
Security for Shipwright starts with the transparent pod security contexts built
into the build strategy API.
This encourages the continued evolution of tooling away from privileged and
"root" containers, both of which are potential security risks.
As a community, we have started experimenting with tools like
<a href="https://github.com/aquasecurity/trivy" target="_blank" rel="noopener noreferrer" class="">Trivy</a> to make the security of
Shipwright-built images more transparent.
We hope to continue these efforts with emerging software security tools in the
future.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bringing-shipwright-to-beta">Bringing Shipwright to Beta<a href="https://shipwright.io/blog/bringing-shipwright-to-beta-and-beyond#bringing-shipwright-to-beta" class="hash-link" aria-label="Direct link to Bringing Shipwright to Beta" title="Direct link to Bringing Shipwright to Beta" translate="no">​</a></h2>
<p>Starting in version 0.12, Shipwright will introduce the beta <a class="" href="https://shipwright.io/docs/build/">Build API</a>
and begin phasing out the current alpha API.
We encourage current and future users to provide feedback as we roll this new
API out.
You can provide feedback by filing an issue on <a href="https://github.com/shipwright-io/build/issues" target="_blank" rel="noopener noreferrer" class="">GitHub</a>,
sending an email to our <a href="mailto:shipwright-dev@lists.shipwright.io" target="_blank" rel="noopener noreferrer" class="">mailing list</a>,
or posting a message to the <code>#shipwright</code> channel on <a href="https://kubernetes.slack.com/archives/C019ZRGUEJC" target="_blank" rel="noopener noreferrer" class="">Kubernetes Slack</a>.
We look forward to hearing from you!</p>]]></content:encoded>
            <category>shipwright</category>
            <category>community</category>
            <category>roadmap</category>
        </item>
        <item>
            <title><![CDATA[Hacktoberfest 2022]]></title>
            <link>https://shipwright.io/blog/hacktoberfest-2022</link>
            <guid>https://shipwright.io/blog/hacktoberfest-2022</guid>
            <pubDate>Wed, 28 Sep 2022 18:50:04 GMT</pubDate>
            <description><![CDATA[Shipwright is participating in Hacktoberfest 2022!]]></description>
            <content:encoded><![CDATA[<p>Shipwright is participating in <a href="https://hacktoberfest.com/" target="_blank" rel="noopener noreferrer" class="">Hacktoberfest 2022</a>!</p>
<p><img decoding="async" loading="lazy" alt="Hacktoberfest 2022" src="https://shipwright.io/assets/images/hacktoberfest2022-logo-67191e2989fd320a1b0cd1fda5f36024.png" width="599" height="460" class="img_ev3q"></p>
<p>Join us this October to contribute to Shipwright and earn your Hacktoberfest rewards.
Check out our <a href="https://github.com/search?q=org%3Ashipwright-io+label%3Ahacktoberfest&amp;type=issues" target="_blank" rel="noopener noreferrer" class="">issues labeled <code>hacktoberfest</code></a> to get started.</p>]]></content:encoded>
            <category>shipwright</category>
            <category>community</category>
            <category>hacktoberfest</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.11.0 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.11.0-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.11.0-is-here</guid>
            <pubDate>Fri, 09 Sep 2022 16:00:01 GMT</pubDate>
            <description><![CDATA[Shipwright is back with the v0.11.0 release. It is mostly a maintenance release without new features:]]></description>
            <content:encoded><![CDATA[<p>Shipwright is back with the v0.11.0 release. It is mostly a maintenance release without new features:</p>
<ul>
<li class="">We updated dependencies to mitigate security vulnerabilities.</li>
<li class="">We updated our images to be based on the new Red Hat Universal Base Image 9 Minimal.</li>
<li class="">We updated build strategy tools as usual. This includes a fix that re-enabled the ko build strategy. Congratulations to them for moving into the own organization. It is a great build tool that we do not just provide a sample for, but also use in our own builds.</li>
</ul>
<p>Behind the scenes we are working on streamlining our API objects. As a first step, we deprecate the following fields:</p>
<ul>
<li class="">In Builds, <code>spec.sources</code> is deprecated. We will consolidate supporting a single source for a Build under <code>spec.source</code>. Also, HTTP sources are deprecated because we think that the focus that secure software supply chain brings, does not match with artifacts that are loaded from an HTTP endpoint.</li>
<li class="">In Builds, <code>spec.dockerfile</code> and <code>spec.builder</code> are deprecated. Those fields were introduced at the very beginning of this project to support relevant build strategies. But, those fields only relate to specific build strategies. Since a couple of releases, we support <a href="https://shipwright.io/docs/build/buildstrategies/#strategy-parameters" target="_blank" rel="noopener noreferrer" class="">strategy parameters</a> for that purpose where we will move to.</li>
<li class="">In BuildRuns, <code>spec.serviceAccount.generate</code> is deprecated. We think that the adhoc generation of service accounts does not fit very well in Kubernetes' security principals and will therefore move away from that concept.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.11.0-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.11.0-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v0.38.3:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.38.3/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.11.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.11.0/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.11.0/sample-strategies.yaml</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.11.0-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.11.0-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.11.0/cli_0.11.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.11.0-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.11.0/cli_0.11.0_macOS_$(uname -m).tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.11.0-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.11.0/cli_0.11.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.11.0-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first make sure the operator v0.11.0 is installed and running on your cluster. You can follow the instructions on <a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.10.0 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.10.0-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.10.0-is-here</guid>
            <pubDate>Fri, 03 Jun 2022 18:20:01 GMT</pubDate>
            <description><![CDATA[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.]]></description>
            <content:encoded><![CDATA[<p>Just before <a href="https://cd.foundation/event/cdcon-2022/" target="_blank" rel="noopener noreferrer" class="">cdCon 2022</a>, 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 <a class="" href="https://shipwright.io/blog/upcoming-shipwright-community-summit">our blog post</a> for more information. See you in Austin or in the virtual space.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="features">Features<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no">​</a></h2>
<p>Let's get back to v0.10. It comes with one big and long-wanted feature:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="volume-support">Volume support<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#volume-support" class="hash-link" aria-label="Direct link to Volume support" title="Direct link to Volume support" translate="no">​</a></h3>
<p>We extended our build strategy resource to contain volumes. Build strategy authors can "finalize" them - or make them overridable by Build users.</p>
<p>The most interesting scenario that this enables is the caching of build artifacts. Here is how the <a href="https://github.com/shipwright-io/build/blob/v0.10.0/samples/buildstrategy/ko/buildstrategy_ko_cr.yaml" target="_blank" rel="noopener noreferrer" class="">ko build strategy</a> makes use of it:</p>
<ul>
<li class="">The <a href="https://github.com/shipwright-io/build/blob/v0.10.0/samples/buildstrategy/ko/buildstrategy_ko_cr.yaml#L24-L27" target="_blank" rel="noopener noreferrer" class="">build strategy defines a volume for the caching</a>. The volume is of type <code>emptyDir</code>. 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.</li>
<li class="">Build users can therefore override that volume in their Build (or BuildRun, but for caching scenarios, the Build makes most sense), and point to a writable persistent volume. This allows reuse across BuildRuns.</li>
<li class="">The <a href="https://github.com/shipwright-io/build/blob/v0.10.0/samples/buildstrategy/ko/buildstrategy_ko_cr.yaml#L58-L60" target="_blank" rel="noopener noreferrer" class="">ko build strategy references the volume in one of its steps</a> and <a href="https://github.com/shipwright-io/build/blob/v0.10.0/samples/buildstrategy/ko/buildstrategy_ko_cr.yaml#L68-L69" target="_blank" rel="noopener noreferrer" class="">uses it for the GOCACHE</a>.</li>
</ul>
<p>Especially if you rebuild larger projects, the performance gain is enormous.</p>
<p>We will look at other sample build strategies in the future and will evolve them with volume support in the next releases.</p>
<p><strong>Note</strong>: the feature comes with one breaking change that is relevant for Build Strategy authors. Previously, you were able to define <code>volumeMounts</code> on <code>buildSteps</code>. 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 <code>buildSteps</code>. For example, the <a href="https://github.com/shipwright-io/build/blob/v0.10.0/samples/buildstrategy/source-to-image/buildstrategy_source-to-image_cr.yaml#L7-L10" target="_blank" rel="noopener noreferrer" class="">source-to-image build strategy now has explicit emptyDir volumes</a> to share directories between the source analysis and build step.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="smaller-items">Smaller items<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#smaller-items" class="hash-link" aria-label="Direct link to Smaller items" title="Direct link to Smaller items" translate="no">​</a></h3>
<p>Beside that, we invested in maintenance-related items:</p>
<ul>
<li class="">Dependabot now helps us to deliver secure releases by notifying us of necessary updates in our Go modules. We already merged <a href="https://github.com/shipwright-io/build/pulls?q=is%3Apr+author%3Aapp%2Fdependabot+milestone%3Arelease-v0.10.0" target="_blank" rel="noopener noreferrer" class="">its first pull requests</a>.</li>
<li class="">We now build with Go 1.18</li>
<li class="">We're now supporting up to Tekton v0.35</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v0.35.1:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.35.1/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.10.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.10.0/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.10.0/sample-strategies.yaml</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">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</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">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</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">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</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.10.0-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>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 <a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Upcoming Shipwright Community Summit]]></title>
            <link>https://shipwright.io/blog/upcoming-shipwright-community-summit</link>
            <guid>https://shipwright.io/blog/upcoming-shipwright-community-summit</guid>
            <pubDate>Mon, 23 May 2022 21:14:00 GMT</pubDate>
            <description><![CDATA[Overview]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://shipwright.io/blog/upcoming-shipwright-community-summit#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>We are pleased to announce that this year we will be hosting our first Shipwright <strong>Community Summit</strong> at the <a href="https://cdcon2022.sched.com/" target="_blank" rel="noopener noreferrer" class="">cdCon 2022</a> Conference.</p>
<p>The Shipwright Community Summit brings together our community members and future contributors, or any interested party. During the Community Summit we expect to get closer to you and address any questions you might have related to our Technology, Processes or Community.</p>
<p>If you would be interested to participate on this event, please refer to the next sections.</p>
<p><em>It goes without saying that we are very excited to meet you.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="i-want-to-participate-please-tell-me-more">I want to participate, please tell me more<a href="https://shipwright.io/blog/upcoming-shipwright-community-summit#i-want-to-participate-please-tell-me-more" class="hash-link" aria-label="Direct link to I want to participate, please tell me more" title="Direct link to I want to participate, please tell me more" translate="no">​</a></h2>
<p>The Shipwright Community will be available both on-site and virtually on <strong><em>Thursday June 9, 2022 2:00pm to 5:00pm CDT</em></strong>, you can find the schedule in <a href="https://sched.co/12zXm" target="_blank" rel="noopener noreferrer" class="">here</a>.</p>
<blockquote>
<p><strong>On-site</strong>: Find us at room <strong><em>209</em></strong> in the Conference Venue.</p>
</blockquote>
<blockquote>
<p><strong>Virtually</strong>: We will be hosting a virtual session in Zoom. Join us on <a href="https://zoom.us/j/97487770299" target="_blank" rel="noopener noreferrer" class="">https://zoom.us/j/97487770299</a>.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-to-expect">What to expect<a href="https://shipwright.io/blog/upcoming-shipwright-community-summit#what-to-expect" class="hash-link" aria-label="Direct link to What to expect" title="Direct link to What to expect" translate="no">​</a></h2>
<table><thead><tr><th>Topic</th><th>Description</th></tr></thead><tbody><tr><td><em>Ask us Anything</em></td><td>We prepared in advance a <a href="https://github.com/shipwright-io/community/discussions/89" target="_blank" rel="noopener noreferrer" class="">GitHub discussion</a>, so you could drop there any questions you might want to discuss.</td></tr><tr><td><em>Contributors Introduction</em></td><td>We would like to tell you a little more on who we are, how to reach out and how to engage with the community.</td></tr><tr><td><em>Demo Festival</em></td><td>Let's show some of the Shipwright capabilities, and how you can leverage them!</td></tr><tr><td><em>Roadmap</em></td><td>Discussion on the upcoming big items, both from a technical and community point of view.</td></tr><tr><td><em>Open Forum</em></td><td>The rest of the time would be an <em>office hours</em> approach, where we can discuss anything.</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="additional-events">Additional Events<a href="https://shipwright.io/blog/upcoming-shipwright-community-summit#additional-events" class="hash-link" aria-label="Direct link to Additional Events" title="Direct link to Additional Events" translate="no">​</a></h2>
<p>Here are our two talks taking place during the conference.</p>
<p><a href="https://sched.co/12vDM" target="_blank" rel="noopener noreferrer" class="">DevSecOps with Shipwright and Tekton</a></p>
<p><img decoding="async" loading="lazy" src="https://shipwright.io/assets/images/session_01-c9f7b7340a905081da9135ad2b98a3e2.png" width="1200" height="628" class="img_ev3q"></p>
<p><a href="https://sched.co/12vDJ" target="_blank" rel="noopener noreferrer" class="">Project Shipwright Update</a></p>
<p><img decoding="async" loading="lazy" src="https://shipwright.io/assets/images/session_02-f4a0c81524cb0a8c54907b60f526b339.png" width="1200" height="628" class="img_ev3q"></p>]]></content:encoded>
            <category>shipwright</category>
            <category>community</category>
            <category>cdcon</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.9.0 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.9.0-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.9.0-is-here</guid>
            <pubDate>Thu, 14 Apr 2022 18:20:01 GMT</pubDate>
            <description><![CDATA[We are proud to have an Easter present for you: the new Shipwright v0.9.0 release with some really cool features.]]></description>
            <content:encoded><![CDATA[<p>We are proud to have an Easter present for you: the new Shipwright v0.9.0 release with some really cool features.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="features">Features<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no">​</a></h2>
<p>Interested in what we have for you. Here are three larger items:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="standalone-buildruns">Standalone BuildRuns<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#standalone-buildruns" class="hash-link" aria-label="Direct link to Standalone BuildRuns" title="Direct link to Standalone BuildRuns" translate="no">​</a></h3>
<p>In Shipwright, in order to create a container image from source or a <code>Dockerfile</code>, you so far needed a <code>Build</code> and a <code>BuildRun</code>. Very simplified, it is the <code>Build</code> that contains all pieces of information required to know what to build and the <code>BuildRun</code> in this picture is the <em>trigger</em> to kick off the actual build process. This setup allows for a good separation of concerns and is ideal for use cases in which one builds a new image from the same source repository over the course of time.</p>
<p>However, frequent feedback we got is that there are also use cases where users just want to have a one-off build run and in these scenarios an additional <code>Build</code> just adds unnecessary complexity.</p>
<p>With this release, we introduced the option to embed a build specification into a <code>BuildRun</code>. That enables standalone build runs with just one resource definition in the cluster. The build specification is exactly the same configuration one would use in a <code>Build</code> resource, so it will immediately look familiar. Instead of <code>buildRef</code> in the <code>BuildRun</code> <code>spec</code> section, use <code>buildSpec</code> to configure everything you need.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> standalone</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">buildSpec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">source</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">io/sample</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">go.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">contextDir</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> source</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">strategy</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ClusterBuildStrategy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> buildpacks</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">v3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">output</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> foo/bar</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">latest</span><br></span></code></pre></div></div>
<p>Some technical notes:</p>
<ul>
<li class="">You cannot use <code>buildRef</code> and <code>buildSpec</code> at the same time in one <code>BuildRun</code>, as this would be ambiguous. Therefore the respective <code>BuildRun</code> will reflect this with an error message in the status condition.</li>
<li class="">The same rational applies also to the override options (e.g. <code>timeout</code>), which can only be used with the <code>buildRef</code> field. These overrides are not required, since you can define all build specific fields in the <code>buildSpec</code> directly.</li>
<li class="">There is no preference for one or the other option, you can use <code>buildRef</code> or <code>buildSpec</code> in different build runs. It is up to your respective use case and liking.</li>
<li class="">An embedded build specification does not count as a <code>Build</code>, it does not have a name and it does not affect the purely build related metrics (i.e. the build counter).</li>
<li class="">Tekton <code>TaskRun</code> resources that are created by Shipwright will only have a <code>BuildRun</code> reference in their label for embedded builds, since there is no actual <code>Build</code> in the system. This is important for any label selector that might expect a <code>TaskRun</code> to have the build label.</li>
<li class="">The <code>buildSpec</code> field and the <code>Build</code> <code>spec</code> field are technically the exact same definition. This means everything that is supported in builds is also supported as an embedded build specification. The same applies for potential field deprecation, it applies to both.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="buildrun-cleanup">BuildRun cleanup<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#buildrun-cleanup" class="hash-link" aria-label="Direct link to BuildRun cleanup" title="Direct link to BuildRun cleanup" translate="no">​</a></h3>
<p>In Shipwright, till now, we did not have a method to automatically delete BuildRuns. This release allows you to do that by adding a few fields to Build and BuildRun specifications. This feature can be used by adding the following fields:</p>
<ul>
<li class="">BuildRun specific time to live (TTL) fields:<!-- -->
<ul>
<li class=""><code>buildrun.spec.retention.ttlAfterFailed</code>: The BuildRun is deleted if the mentioned duration of time has passed after the BuildRun has failed.</li>
<li class=""><code>buildrun.spec.retention.ttlAfterSucceeded</code>: The BuildRun is deleted if the mentioned duration of time has passed after the BuildRun has succeeded.</li>
</ul>
</li>
<li class="">Build specific TTL fields:<!-- -->
<ul>
<li class=""><code>build.spec.retention.ttlAfterFailed</code>: The BuildRun is deleted if the mentioned duration of time has passed after the BuildRun has failed.</li>
<li class=""><code>build.spec.retention.ttlAfterSucceeded</code>: The BuildRun is deleted if the mentioned duration of time has passed after the BuildRun has succeeded.</li>
</ul>
</li>
<li class="">Build specific limit fields:<!-- -->
<ul>
<li class=""><code>build.spec.retention.succeededLimit</code> - Defines number of succeeded BuildRuns for a Build that can exist.</li>
<li class=""><code>build.spec.retention.failedLimit</code> - Defines number of failed BuildRuns for a Build that can exist.</li>
</ul>
</li>
</ul>
<p>Some technical notes:</p>
<ul>
<li class="">If both Build limits and TTL values are applied, the BuildRun will get deleted once the first criteria is met.</li>
<li class="">In case TTL values are defined in BuildRun specification as well as Build specification, priority will be given to the values defined in the BuildRun specification.</li>
<li class="">When changes are made to <code>build.spec.retention.failedLimit</code> and <code>build.spec.retention.succeededLimit</code> values, they become effective immediately.</li>
<li class="">When changes are made to <code>build.spec.retention.ttlAfterFailed</code> and <code>build.spec.retention.ttlAfterSucceeded</code> values in Builds, they will only affect new BuildRuns. However, updating <code>buildrun.spec.retention.ttlAfterFailed</code> and <code>buildrun.spec.retention.ttlAfterSucceeded</code> in BuildRuns that have already been created will enforce the changes as soon as they are applied.</li>
<li class="">If the above mentioned retention fields are not used, BuildRuns will not be deleted automatically.</li>
</ul>
<p>Our command line interface is supporting these new fields when creating Builds, and BuildRuns:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build create my-build [...] --retention-failed-limit 10 --retention-succeeded-limit 5 --retention-ttl-after-failed 48h --retention-ttl-after-succeeded 3h</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build run my-build --retention-ttl-after-failed 24h --retention-ttl-after-succeeded 1h</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="local-sources-using-the-bundle-approach">Local sources using the bundle approach<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#local-sources-using-the-bundle-approach" class="hash-link" aria-label="Direct link to Local sources using the bundle approach" title="Direct link to Local sources using the bundle approach" translate="no">​</a></h3>
<p>In our v0.8.0 release, we enabled local source for builds using the streaming approach. A BuildRun is then waiting to get sources which the CLI streams using <code>kubectl exec</code> capabilities. This is an amazing feature that enables you to build container images without being required to commit and push your sources into a Git repository.</p>
<p>With v0.9.0, we support an alternative approach to transport sources into the BuildRun: using a container image, we call it the source bundle. You setup your build with some additional flags:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build create my-build [...] --source-bundle-image my-registry/some-image --source-bundle-prune Never|AfterPull --source-credentials-secret registry-credentials</span><br></span></code></pre></div></div>
<p>And then you run it in the same way as with the streaming approach:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ cd directory-with-my-sources</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build upload my-build</span><br></span></code></pre></div></div>
<p>The CLI will package the sources and upload it to the container registry. The BuildRun will download them from there. The <code>--source-bundle-prune</code> argument enables you to specify whether sources should be kept, or deleted after the BuildRun pulled them.</p>
<p>Why do we need two approaches? And which one should you use? Here are some criteria to decide:</p>
<ul>
<li class="">
<p>You want to use local sources without much configuration? Use the streaming approach.</p>
</li>
<li class="">
<p>Your Kubernetes cluster does not permit you to perform a <code>kubectl exec</code> operation? Use the bundle approach.</p>
</li>
<li class="">
<p>You want to keep the sources of your build to later access it? Use the bundle approach. The BuildRun status captures the digest of the source bundle image that was pulled:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">sources</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">bundle</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">digest</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> sha256</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">ecba65abd0f49ed60b1ed40b7fca8c25e34949429ab3c6c963655e16ba324170</span><br></span></code></pre></div></div>
</li>
</ul>
<p>You can read more about this in our <a href="https://github.com/shipwright-io/cli/blob/v0.9.0/docs/local_source_upload.md" target="_blank" rel="noopener noreferrer" class="">CLI documentation</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="smaller-items">Smaller items<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#smaller-items" class="hash-link" aria-label="Direct link to Smaller items" title="Direct link to Smaller items" translate="no">​</a></h3>
<p>And that's not all, we have some smaller items that are worth to explore:</p>
<ul>
<li class="">We improved our sample build strategies to expose more parameters:<!-- -->
<ul>
<li class="">Buildpacks now has a <a href="https://github.com/shipwright-io/build/blob/v0.9.0/samples/buildstrategy/buildpacks-v3/buildstrategy_buildpacks-v3_cr.yaml#L8-L10" target="_blank" rel="noopener noreferrer" class=""><code>platform-api-version</code> parameter that allows to configure the <code>CNB_PLATFORM_API</code> version</a> which is relevant to use features of newer Buildpacks implementations</li>
<li class="">The BuildAh sample strategy now exposes its <a href="https://github.com/shipwright-io/build/blob/v0.9.0/samples/buildstrategy/buildah/buildstrategy_buildah_cr.yaml#L180-L193" target="_blank" rel="noopener noreferrer" class="">parameters to configure default, blocked, and insecure registries as arrays</a>. It also supports <a href="https://github.com/shipwright-io/build/blob/v0.9.0/samples/buildstrategy/buildah/buildstrategy_buildah_cr.yaml#L176-L179" target="_blank" rel="noopener noreferrer" class="">build-args</a> in the same way as the BuildKit strategy.</li>
<li class="">The BuildKit strategy now supports to build multi-platform images.</li>
</ul>
</li>
<li class="">We added <a href="https://github.com/shipwright-io/build/blob/v0.9.0/docs/buildstrategies.md#securely-referencing-string-parameters" target="_blank" rel="noopener noreferrer" class="">documentation about how to securely reference build strategy parameters in steps without allowing users to inject code in inline scripts</a>. All sample build strategies are now secure.</li>
<li class="">We added the <code>shp version</code> command to easily figure out which version of the command line interface is installed.</li>
<li class="">Finally, we have now <a href="https://github.com/shipwright-io/cli/blob/v0.9.0/docs/shp.md" target="_blank" rel="noopener noreferrer" class="">documentation for all command line interface commands</a> which is automatically generated based on our commands, the flags and their description.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v0.34.1</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.34.1/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.9.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.9.0/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.9.0/sample-strategies.yaml</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.9.0/cli_0.9.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.9.0/cli_0.9.0_macOS_x86_64.tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.9.0/cli_0.9.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first make sure the operator v0.9.0 is installed and running on your cluster. You can follow the instructions on <a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next-">What's next ?<a href="https://shipwright.io/blog/shipwright-v0.9.0-is-here#whats-next-" class="hash-link" aria-label="Direct link to What's next ?" title="Direct link to What's next ?" translate="no">​</a></h2>
<p>Some really cool features are under development these days:</p>
<ul>
<li class="">Volume support will make it in the v0.10 release. Much wanted to support for example layer caching.</li>
<li class="">We will enable Shipwright to take care if the image push operation. This will at the beginning make build strategies simpler as they don't need to take care of that anymore, including capturing the digest and size of the image. In the future this enables more scenarios that we today cannot easily implement, such as SBOM creation, or vulnerability scanning.</li>
<li class="">We work on trigger support which will enable you to configure your Builds to start right when you push changes to your Git repository.</li>
</ul>
<p>You want to hear from us? Join us a <a href="https://sched.co/10UYU" target="_blank" rel="noopener noreferrer" class="">cdCon in June in Austin where we speak about our project</a>.</p>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.8.0 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.8.0-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.8.0-is-here</guid>
            <pubDate>Wed, 02 Feb 2022 01:36:00 GMT</pubDate>
            <description><![CDATA[So, you have heard great things about Shipwright last year and you are ready for more? We are starting the year with our v0.8.0, and here is a list of the most relevant things you should know.]]></description>
            <content:encoded><![CDATA[<p>So, you have heard great things about Shipwright last year and you are ready for more? We are starting the year with our <a href="https://github.com/shipwright-io/build/releases/tag/v0.8.0" target="_blank" rel="noopener noreferrer" class="">v0.8.0</a>, and here is a list of the most relevant things you should know.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="features">Features<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no">​</a></h2>
<p>As promised in the <a class="" href="https://shipwright.io/blog/shipwright-v0.7.0-is-here">v0.7.0</a> blog post, we closed last year developing three interesting features.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="array-support-in-parameters">Array support in Parameters<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#array-support-in-parameters" class="hash-link" aria-label="Direct link to Array support in Parameters" title="Direct link to Array support in Parameters" translate="no">​</a></h3>
<p>We introduced an extension to the <strong>parameter</strong> feature, by allowing users to define parameters in the form of a list. A list can be composed of values from secrets, configmaps or plain values.</p>
<p>Our main driver was the support for <a href="https://docs.docker.com/engine/reference/builder/#using-arg-variables" target="_blank" rel="noopener noreferrer" class="">ARGS</a> in Dockerfiles. This allows users to further <a href="https://github.com/shipwright-io/sample-go/blob/main/docker-build-with-args/Dockerfile" target="_blank" rel="noopener noreferrer" class="">customize</a> their builds, by specifying variables that are available to the <code>RUN</code> command.</p>
<p>In addition, being able to use primitive resources (<em>such as secrets and configmaps</em>) to store key-values, allows users to protect confidential data or to share data when defining parameters values in their <code>Builds</code> or <code>BuildRuns</code>.</p>
<p><strong>Note</strong>: For more details on this, please see the <a href="https://github.com/shipwright-io/build/blob/v0.8.0/docs/buildstrategies.md#strategy-parameters" target="_blank" rel="noopener noreferrer" class="">docs</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="surfacing-errors-in-the-buildrun-status">Surfacing Errors in the BuildRun Status<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#surfacing-errors-in-the-buildrun-status" class="hash-link" aria-label="Direct link to Surfacing Errors in the BuildRun Status" title="Direct link to Surfacing Errors in the BuildRun Status" translate="no">​</a></h3>
<p>Surfacing errors from different containers can be a challenging task, not because of technicality, but rather the question of the best way to represent the state. In case of <em>failure</em> or <em>success</em> during execution, we surface the state under the <code>.status</code> subresource of a <code>BuildRun</code>.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> BuildRun</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># [...]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># [...]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">failureDetails</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">location</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">container</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> step</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">source</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">default</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">pod</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> baran</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">buildrun</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">gzmv5</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">b7wbf</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">pod</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">bbpqr</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">message</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> The source repository does not exist</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> or you have insufficient permission</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      to access it.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">reason</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> GitRemotePrivate</span><br></span></code></pre></div></div>
<p>In this release we concentrated on improving the state of errors that occur during the cloning of <em>git</em> repositories, by introducing <code>.status.failureDetails</code> field. This provides further details on why <code>step-source-default</code> failed.</p>
<p>In addition, this feature <a href="https://github.com/shipwright-io/build/blob/v0.8.0/docs/buildstrategies.md#system-results" target="_blank" rel="noopener noreferrer" class="">enables</a> Build Strategy Authors to signalize what to surface under <code>.status.failureDetails.reason</code> and <code>.status.failureDetails.message</code>, in case a container terminates with a non-zero exit code. We will be gradually adopting this capability in our strategies, at the moment it is only used in the Buildkit <a href="https://github.com/shipwright-io/build/blob/v0.8.0/samples/buildstrategy/buildkit/buildstrategy_buildkit_cr.yaml#L96-L97" target="_blank" rel="noopener noreferrer" class="">strategy</a>.</p>
<p><em>Now you do not need to worry if you have git misconfigurations in your <code>Builds</code>, we got you covered!</em></p>
<p><strong>Note</strong>: For more details, please see the <a href="https://github.com/shipwright-io/build/blob/main/docs/buildrun.md#understanding-failed-buildruns" target="_blank" rel="noopener noreferrer" class="">docs</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="local-source-upload">Local Source Upload<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#local-source-upload" class="hash-link" aria-label="Direct link to Local Source Upload" title="Direct link to Local Source Upload" translate="no">​</a></h3>
<p>At Shipwright, we've spent a lot of time trying to figure out the best ways to simplify the experience when building container images. In this release we are introducing a new feature that dramatically improves it, we call it <strong>Local Source Upload</strong> .</p>
<p>This feature allows users to build container images from their local source code, improving the developer experience and moving them closer to the inner dev loop (<em>single developer workflow</em>).</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ shp build upload -h</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Creates a new BuildRun instance and instructs the Build Controller to wait for the data streamed,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">instead of executing "git clone". Therefore, you can employ Shipwright Builds from a local repository</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">clone.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The upload skips the ".git" directory completely, and it follows the ".gitignore" directives, when</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">the file is found at the root of the directory uploaded.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> $ shp buildrun upload &lt;build-name&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> $ shp buildrun upload &lt;build-name&gt; /path/to/repository</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Usage:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  shp build upload &lt;build-name&gt; [path/to/source|.] [flags]</span><br></span></code></pre></div></div>
<p>Go ahead and give it a try! The feature is now available in the <a href="https://github.com/shipwright-io/cli/releases/tag/v0.8.0" target="_blank" rel="noopener noreferrer" class="">v0.8.0</a> cli, look for <code>shp build upload</code>!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installing-shipwright">Installing Shipwright<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#installing-shipwright" class="hash-link" aria-label="Direct link to Installing Shipwright" title="Direct link to Installing Shipwright" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="build">Build<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build" translate="no">​</a></h3>
<ol>
<li class="">
<p>Install Tekton v0.30.1</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.30.1/release.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Install v0.8.0 using the release YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.8.0/release.yaml</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>(Optionally) Install the sample build strategies using the YAML manifest:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.8.0/sample-strategies.yaml</span><br></span></code></pre></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="shp-cli">SHP CLI<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#shp-cli" class="hash-link" aria-label="Direct link to SHP CLI" title="Direct link to SHP CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.8.0/cli_0.8.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.8.0/cli_0.8.0_macOS_x86_64.tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.8.0/cli_0.8.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.8.0-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>To deploy and manage Shipwright Builds in your cluster, first make sure the operator v0.8.0 is installed and running on your cluster. You can follow the instructions on <a href="https://operatorhub.io/operator/shipwright-operator" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.</p>
<p>Next, create the following:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[Shipwright v0.7.0 Is Here]]></title>
            <link>https://shipwright.io/blog/shipwright-v0.7.0-is-here</link>
            <guid>https://shipwright.io/blog/shipwright-v0.7.0-is-here</guid>
            <pubDate>Mon, 20 Dec 2021 14:00:00 GMT</pubDate>
            <description><![CDATA[Ready for Christmas? We are, and our v0.7.0 release just made it!]]></description>
            <content:encoded><![CDATA[<p>Ready for Christmas? We are, and our v0.7.0 release just made it!</p>
<p>Is it a big thing just like our <a class="" href="https://shipwright.io/blog/shipwright-v0.6.0-is-here">previous v0.6.0 release</a>? No, but we have still done a couple of nice things:</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-new">What's New<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="signed-images-on-ghcrio">Signed Images on ghcr.io<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#signed-images-on-ghcrio" class="hash-link" aria-label="Direct link to Signed Images on ghcr.io" title="Direct link to Signed Images on ghcr.io" translate="no">​</a></h3>
<p>We decided to go away from Quay as container registry for the images that we produce, and instead to consolidate things in GitHub. The new images can therefore be found in the <a href="https://github.com/orgs/shipwright-io/packages?repo_name=build" target="_blank" rel="noopener noreferrer" class="">Packages section of our repository</a>. No worry, nothing that you need to bother so much. You can continue to install Shipwright through the Kubernetes manifest and that has the right image location in it.</p>
<p>What else has changed with our images? We now sign them with <a href="https://github.com/sigstore/cosign" target="_blank" rel="noopener noreferrer" class="">cosign</a>! You can verify our controller image with the following command:</p>
<div class="language-txt codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-txt codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">COSIGN_EXPERIMENTAL=1 cosign verify ghcr.io/shipwright-io/build/shipwright-build-controller:v0.7.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Verification for ghcr.io/shipwright-io/build/shipwright-build-controller:v0.7.0 --</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The following checks were performed on each of these signatures:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  - The cosign claims were validated</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  - Existence of the claims in the transparency log was verified offline</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  - Any certificates were verified against the Fulcio roots.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[{"critical":{"identity":{"docker-reference":"ghcr.io/shipwright-io/build/shipwright-build-controller"},"image":{"docker-manifest-digest":"sha256:887b76092d0e6f3c4f4c7b781589f41fde1c967ae9ae62f3a6bdbb18251a562f"},"type":"cosign container image signature"}...</span><br></span></code></pre></div></div>
<p>Our signing process takes advantage of the new <a href="https://github.com/sigstore/cosign/blob/main/KEYLESS.md" target="_blank" rel="noopener noreferrer" class="">keyless mode</a> for cosign and support for <a href="https://chainguard.dev/posts/2021-12-01-zero-friction-keyless-signing" target="_blank" rel="noopener noreferrer" class="">OIDC tokens in GitHub actions</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="shp---new-buildrun-delete-command">shp - New <code>buildrun delete</code> Command<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#shp---new-buildrun-delete-command" class="hash-link" aria-label="Direct link to shp---new-buildrun-delete-command" title="Direct link to shp---new-buildrun-delete-command" translate="no">​</a></h3>
<p>In v0.7.0 we fixed a bug that prevented the <code>shp buildrun delete</code> command from being exposed to users.
Thanks to new <a href="https://github.com/golangci/golangci-lint" target="_blank" rel="noopener noreferrer" class="">static analysis tooling</a>, we were able to catch this bug and make this command available.
This will be useful for clusters that rebuild their applications regularly with Shipwright, as pruning old <code>BuildRun</code> objects is essential to keeping your cluster healthy.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="revamped-operator-experience">Revamped Operator Experience<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#revamped-operator-experience" class="hash-link" aria-label="Direct link to Revamped Operator Experience" title="Direct link to Revamped Operator Experience" translate="no">​</a></h3>
<p>We have completely overhauled the operator for those who use <a href="https://olm.operatorframework.io/" target="_blank" rel="noopener noreferrer" class="">Operator Lifecycle Manager</a> (OLM) to install Shipwright.
The operator now comes with its own Custom Resource - <code>ShipwrightBuild</code> - that allows administrators to control where the Shipwright build controller is installed.
It also has the ability to automatically install Tekton Pipelines if Tekton's operator is present in one of OLM's catalogs.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-features">Other Features<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#other-features" class="hash-link" aria-label="Direct link to Other Features" title="Direct link to Other Features" translate="no">​</a></h3>
<p>So far, everything was mostly internal. No new features for our users at all? Of course not. :-) But smaller this time:</p>
<ul>
<li class="">We lifted the limit to specify image annotations and labels just on the Build. You can now also define them on the BuildRun. Our CLI finally knows them as well. You can specify them both when creating Builds and BuildRuns.</li>
<li class="">We introduced a new <a href="https://github.com/shipwright-io/build/blob/v0.7.0/docs/configuration.md" target="_blank" rel="noopener noreferrer" class="">configuration option on the build controller</a>: <code>GIT_ENABLE_REWRITE_RULE</code>. This is <code>false</code> by default, but you can set it to <code>true</code> in the deployment. It addresses a problem that many of our users faced downstream when using Shipwright in IBM Cloud Code Engine: to access private code repositories, they managed to get their SSH key into the system and referenced it in the Build. But, they failed to specify the SSH URL but instead used the HTTPS one. The magic flag advises our Git step to setup an <a href="https://git-scm.com/docs/git-config#Documentation/git-config.txt-urlltbasegtinsteadOf" target="_blank" rel="noopener noreferrer" class="">insteadOf</a> configuration so that the HTTPS URL is internally rewritten to the SSH URL automatically when applicable. The same setting also helps if you have submodules configured using HTTPS in your <code>.gitmodules</code> file, but need to pull them with authentication.</li>
<li class="">We worked further on our environment variable support: the Buildpacks sample build strategy now performs the necessary logic to propagate them to the Buildpacks build so that you can customize the behavior of your build using one of the many configurations that the Buildpacks support.</li>
<li class="">We also further enhanced the BuildRun status: for your Git source, we now include the branch name in case you have not specified any revision in your Build. That way you have better insights on what was built.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="important-notes">Important Notes<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#important-notes" class="hash-link" aria-label="Direct link to Important Notes" title="Direct link to Important Notes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="dependency-updates">Dependency updates<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#dependency-updates" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates" translate="no">​</a></h3>
<ul>
<li class="">We updated our projects to be current: we now build with Go 1.17.</li>
<li class="">With <a href="https://endoflife.date/kubernetes" target="_blank" rel="noopener noreferrer" class="">Kubernetes 1.19 being out of support</a>, we changed our minimum version to 1.20 and internally build with the libraries of 1.21.</li>
<li class="">We now want you to use <a href="https://github.com/tektoncd/pipeline" target="_blank" rel="noopener noreferrer" class="">Tekton Pipelines</a> 0.27 at a minimum but recommend to use the latest 0.30 version.
The Shipwright team contributed a <a href="https://github.com/tektoncd/pipeline/pull/4372" target="_blank" rel="noopener noreferrer" class="">fix</a> that optimizes reconciliations for TaskRuns that are similar to those created by Shipwright BuildRuns.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations-and-breaking-changes">Deprecations and Breaking Changes<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#deprecations-and-breaking-changes" class="hash-link" aria-label="Direct link to Deprecations and Breaking Changes" title="Direct link to Deprecations and Breaking Changes" translate="no">​</a></h3>
<ul>
<li class="">As previously noted, the minimum supported version of Kubernetes for Shipwright is now v1.20, and the minimum supported version of Tekton Pipelines is 0.27.</li>
<li class="">In Shipwright build strategies, an <code>emptyDir</code> volume is implicitly created if the strategy uses volume mounts in the build stpes.
This implicit behavior is now deprecated, and will be replaced with explicit support for volumes in an upcoming release.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-install">How to install<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#how-to-install" class="hash-link" aria-label="Direct link to How to install" title="Direct link to How to install" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="shipwright-builds">Shipwright Builds<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#shipwright-builds" class="hash-link" aria-label="Direct link to Shipwright Builds" title="Direct link to Shipwright Builds" translate="no">​</a></h3>
<p>Nothing has changed on the installation. Assuming your Kubernetes cluster is ready, it's all done with just these three commands, which install Tekton, Shipwright, and the sample build strategies.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.30.0/release.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.7.0/release.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f https://github.com/shipwright-io/build/releases/download/v0.7.0/sample-strategies.yaml</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="shp-command-line">shp Command Line<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#shp-command-line" class="hash-link" aria-label="Direct link to shp Command Line" title="Direct link to shp Command Line" translate="no">​</a></h3>
<p>For the CLI, we still have no package manager support. :-( You therefore need to get the release again from GitHub:</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="windows">Windows<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#windows" class="hash-link" aria-label="Direct link to Windows" title="Direct link to Windows" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.7.0/cli_0.7.0_windows_x86_64.tar.gz | tar xzf - shp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="mac">Mac<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#mac" class="hash-link" aria-label="Direct link to Mac" title="Direct link to Mac" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ curl --silent --fail --location https://github.com/shipwright-io/cli/releases/download/v0.7.0/cli_0.7.0_macOS_x86_64.tar.gz | tar -xzf - -C /usr/local/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ shp help</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="linux">Linux<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#linux" class="hash-link" aria-label="Direct link to Linux" title="Direct link to Linux" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ curl --silent --fail --location "https://github.com/shipwright-io/cli/releases/download/v0.7.0/cli_0.7.0_linux_$(uname -m | sed 's/aarch64/arm64/').tar.gz" | sudo tar -xzf - -C /usr/bin shp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ shp help</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="operator">Operator<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#operator" class="hash-link" aria-label="Direct link to Operator" title="Direct link to Operator" translate="no">​</a></h3>
<p>Coming soon! We are in the process of adding the new version of the Shipwright operator to <a href="https://operatorhub.io/" target="_blank" rel="noopener noreferrer" class="">OperatorHub</a>.
Once the new version has been added, you can follow the provided instructions on OperatorHub to install the operator with OLM.
If you previously installed v0.1.0 of the Shipwright operator, you must remove it first.</p>
<p>Once the operator has been installed, you will be able to deploy the Build controller and APIs by creating an instance of the <code>ShipwrightBuild</code> custom resource:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operator.shipwright.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ShipwrightBuild</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">targetNamespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shipwright</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">build</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next-">What's next ?<a href="https://shipwright.io/blog/shipwright-v0.7.0-is-here#whats-next-" class="hash-link" aria-label="Direct link to What's next ?" title="Direct link to What's next ?" translate="no">​</a></h2>
<p>We have cool stuff being under development. So, let me list four items that are all cool and are in the makings.</p>
<p>Soon you should be able to see an evolution of parameters: build strategy authors will be able to define array parameters which is required for scenarios such as build-args for Dockerfile-based builds, and Build users will be able to define that the value should be retrieved from a ConfigMap or Secret.</p>
<p>We work on the next evolution of error reporting inside BuildRuns. Where you today just see a BuildRun being failed and must look at the Pod logs to determine the root cause, you will see further error reasons and messages in the BuildRun status directly – with those details provided internally in our Shipwright-managed steps (like the Git step, for example when a revision does not exist), but also by the build strategy author (for example if Buildpacks fail to detect any source code, or a Dockerfile-based strategy when the Dockerfile does not exist).</p>
<p>We are also looking to add support for volumes (such as <code>PersistenVolumeClaims</code>) in future releases.
Our first pass will help build strategy authors add volumes in their build steps, enabling capabilities such as artifact and image layer caching.</p>
<p>Finally, we investigated and spiked on different approaches to support building from source code from your local disk rather than from a Git repository. Part of the code is even in the product already, but we need more time to get it done end-to-end.</p>
<p>Stay tuned!</p>]]></content:encoded>
            <category>shipwright</category>
            <category>release</category>
        </item>
    </channel>
</rss>