<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Buildpacks - Medium]]></title>
        <description><![CDATA[Buildpacks are pluggable, modular tools that translate source code into OCI images. - Medium]]></description>
        <link>https://medium.com/buildpacks?source=rss----f4d6454791bd---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Buildpacks - Medium</title>
            <link>https://medium.com/buildpacks?source=rss----f4d6454791bd---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 30 Jun 2026 07:59:17 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/buildpacks" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Deprecation Announcement: Windows Container Feature in Cloud Native Buildpacks]]></title>
            <link>https://medium.com/buildpacks/deprecation-announcement-windows-container-feature-in-cloud-native-buildpacks-bbb70351343d?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/bbb70351343d</guid>
            <category><![CDATA[deprecation]]></category>
            <category><![CDATA[buildpack]]></category>
            <category><![CDATA[windows]]></category>
            <dc:creator><![CDATA[Joe Kutner]]></dc:creator>
            <pubDate>Thu, 05 Dec 2024 19:14:28 GMT</pubDate>
            <atom:updated>2024-12-05T19:14:28.844Z</atom:updated>
            <content:encoded><![CDATA[<h3><strong>Deprecation of Support for Windows Containers</strong></h3><p>Effective immediately, we are announcing the deprecation of the <a href="https://buildpacks.io/docs/for-app-developers/how-to/special-cases/build-for-windows/">Windows Container feature</a> in Cloud Native Buildpacks. This feature will no longer be supported and will be <strong>removed from future lifecycle versions starting in 2025</strong>.</p><p>This change does <em>not</em> impact <a href="https://buildpacks.io/docs/for-platform-operators/how-to/integrate-ci/pack/">Windows distributions of the Pack CLI</a>, which will continue to be supported. The project is committed to ensuring a great experience for Windows users.</p><p>This decision was made to focus our efforts on maintaining and enhancing features that provide the most value to the Buildpacks community and ecosystem. The removal of the Windows Container feature will allow us to prioritize investments in areas that better align with the current and future needs of our users.</p><p><strong>Key Dates</strong></p><ul><li><strong>Immediate Deprecation:</strong> Effective today, the Windows Container feature is officially deprecated.</li><li><strong>Removal Timeline:</strong> The feature will be completely removed in lifecycle versions released in 2025 and beyond.</li></ul><p><strong>Recommended Actions</strong></p><p>For teams relying on the Windows Container feature, we recommend:</p><ol><li>Evaluating alternative strategies for building and running applications within the Cloud Native Buildpacks ecosystem.</li><li>Exploring container solutions and platforms that align with your operating system requirements.</li><li>Reaching out to the <a href="https://buildpacks.io/community/">community or support channels</a> for guidance and migration assistance.</li></ol><p>For more information, please see the <a href="https://github.com/buildpacks/rfcs/pull/311">Remove Windows Containers support RFC</a>.</p><p>We appreciate your understanding as we make this transition to better support the community. For any questions, concerns, or feedback, please reach out via our GitHub repository or community forums.</p><p>Thank you,<br> The Cloud Native Buildpacks Team</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bbb70351343d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/deprecation-announcement-windows-container-feature-in-cloud-native-buildpacks-bbb70351343d">Deprecation Announcement: Windows Container Feature in Cloud Native Buildpacks</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing findings from security audit]]></title>
            <link>https://medium.com/buildpacks/announcing-findings-from-security-audit-b4701f4e8b4b?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/b4701f4e8b4b</guid>
            <category><![CDATA[buildpack]]></category>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <category><![CDATA[cloud-native]]></category>
            <category><![CDATA[security]]></category>
            <dc:creator><![CDATA[Natalie Arellano]]></dc:creator>
            <pubDate>Wed, 17 Jul 2024 20:05:34 GMT</pubDate>
            <atom:updated>2024-07-17T20:05:34.470Z</atom:updated>
            <content:encoded><![CDATA[<p>The CNB project is proud to have recently completed a security review, working with <a href="https://www.quarkslab.com/">Quarkslab</a> and the <a href="https://ostif.org/">Open Source Technology Improvement Fund</a> (OSTIF). Today, we are publishing releases of <a href="https://github.com/buildpacks/pack/releases/tag/v0.35.0">pack</a> (0.35.0) and the <a href="https://github.com/buildpacks/lifecycle/releases/tag/v0.20.0">lifecycle</a> (0.20.0) that contain fixes for vulnerabilities identified in the review. Please upgrade as soon as possible to get the benefit of these fixes.</p><p>This post discusses the high severity vulnerabilities identified in the review and provides links to the full list of vulnerabilities and their remediations. Findings and recommendations from the review are also discussed on <a href="https://blog.quarkslab.com/audit-of-cloud-native-buildpacks.html">Quarkslab’s blog</a> and <a href="https://ostif.org/buildpacks-audit-complete/">OSTIF’s blog</a>.</p><h3>Spotlight: high severity issues</h3><p>Many of the vulnerabilities, especially the high severity ones, relate to the use of pack and the lifecycle in CI/CD systems, such as multi-tenant build environments using a shared Docker host.</p><p><strong>(High 1) Host compromise by overwriting trusted container images</strong> — this can occur when a shared Docker host is used as both a source and a sink for build input and output images. A malicious pack user could build an application image with the same image name as a build input (such as builder, lifecycle, or run images), causing future builds by other users of the build system to pull in the malicious input. We address this problem by:</p><ul><li>Forbidding application names that match trusted build inputs (pack <a href="https://github.com/buildpacks/pack/issues/2223">issue</a>)</li><li>Warning pack users to pull build inputs from a registry when we detect that pack is running in a container (a common scenario for a shared Docker host) (pack <a href="https://github.com/buildpacks/pack/issues/2222">issue</a>)</li></ul><blockquote>A registry is a safer source for build inputs as user permissions prevent unauthorized writes</blockquote><ul><li>Informing our end users that using ​​a shared Docker host as a source for build inputs is <em>insecure</em></li></ul><p><strong>(High 2) Cache poisoning by accessing other applications’ caches</strong> — this can occur when volumes managed by a shared Docker host are used as build and launch caches. We address this problem by:</p><ul><li>Introducing the concept of a pack “volume key” that will make volume names difficult to determine without the key (pack <a href="https://github.com/buildpacks/pack/issues/2224">issue</a>)</li><li>Informing our end users that cache images (stored in a registry) are safer repositories for build caches (see above re: user permissions)</li></ul><h3>In total</h3><p>The full list of vulnerabilities identified and their remediations are shown below:</p><p><strong>(High 1) Host compromise by overwriting trusted container images</strong></p><ul><li>See work to <a href="https://github.com/buildpacks/pack/issues/2223">validate application names</a> and <a href="https://github.com/buildpacks/pack/issues/2222">warn if NOT — pull-policy=always in container</a>, released in pack 0.35.0</li></ul><p><strong>(High 2) Cache poisoning by accessing other applications’ caches</strong></p><ul><li>See work to <a href="https://github.com/buildpacks/pack/issues/2224">ensure ownership of build and launch caches</a>, released in pack 0.35.0</li></ul><p><strong>(Med 1) Docker in-container privilege escalation</strong></p><ul><li>See work to <a href="https://github.com/buildpacks/pack/issues/2220">set security-opt field to no-new-privileges:true</a>, released in pack 0.35.0</li></ul><p><strong>(Med 2) Docker permissive inter-container connectivity</strong></p><ul><li>See work to <a href="https://github.com/buildpacks/pack/issues/2219">launch build containers in a separate ephemeral Docker bridge network</a>, released in pack 0.35.0</li></ul><p><strong>(Low 1) Denial-of-Service (DoS) provoked by race condition</strong></p><ul><li>Partially mitigated by work to <a href="https://github.com/buildpacks/lifecycle/issues/1382">recover corrupt caches</a>, released in lifecycle 0.20.0; see also a strategy considered to <a href="https://github.com/buildpacks/lifecycle/issues/1383">prevent simultaneous builds of applications having the same name</a> that we chose not to implement at this time</li></ul><p><strong>(Low 2) Denial-of-Service (DoS) provoked by removing build cache tarballs or altering the OCI image manifest</strong></p><ul><li>Partially resolved (for volume caches) by work to <a href="https://github.com/buildpacks/lifecycle/issues/1382">recover corrupt caches</a>, released in lifecycle 0.20.0</li></ul><p><strong>(Low 3) Denial-of-Service (DoS) provoked by an unbound execution time</strong></p><ul><li>We chose not to address this one at this time, leaving management up to the platform or end user; see issue to <a href="https://github.com/buildpacks/pack/issues/2226">bound buildpack execution time</a></li></ul><p><strong>(Low 4) Data leak by accessing other applications’ caches</strong></p><ul><li>See work to <a href="https://github.com/buildpacks/pack/issues/2224">ensure ownership of build and launch caches</a>, released in pack 0.35.0</li></ul><p><strong>(Info 1) Specification violation using Docker and user namespaces</strong></p><ul><li>See work to <a href="https://github.com/buildpacks/pack/issues/2218">run build containers with userns=host</a>, released in pack 0.35.0</li></ul><p><strong>(Info 2) Excessive Docker container capabilities</strong></p><ul><li>We are leaving this one open for further investigation, see issue to <a href="https://github.com/buildpacks/pack/issues/2225">investigate which container capabilities are truly needed for build</a></li></ul><h3>Feedback welcome</h3><p>The CNB project is constantly striving to make our software the most secure and reliable for platforms and developers everywhere.</p><p><strong>Found a security issue?</strong> We appreciate your help! Follow the instructions in our <a href="https://github.com/buildpacks/pack/security/policy">security policy</a> to report it responsibly.</p><p><strong>Got feedback or want to join the conversation?</strong> Head over to our <a href="https://buildpacks.io/community/">community page</a>. We’d love to hear from you!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b4701f4e8b4b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/announcing-findings-from-security-audit-b4701f4e8b4b">Announcing findings from security audit</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Natalie Arellano joins the Buildpack TOC]]></title>
            <link>https://medium.com/buildpacks/natalie-arellano-joins-the-buildpack-toc-099c16ead962?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/099c16ead962</guid>
            <category><![CDATA[buildpack]]></category>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <category><![CDATA[cncf]]></category>
            <dc:creator><![CDATA[Joe Kutner]]></dc:creator>
            <pubDate>Wed, 20 Mar 2024 14:14:14 GMT</pubDate>
            <atom:updated>2024-03-20T14:14:14.540Z</atom:updated>
            <content:encoded><![CDATA[<p>The Cloud Native Buildpacks team is excited to welcome Natalie Arellano to the project’s <a href="https://github.com/buildpacks/community/blob/main/TEAMS.md#technical-oversight-committee">Technical Oversight Committee (TOC)</a>. The TOC oversees all aspects of the project and is responsible for defining the long term vision of Cloud Native Buildpacks. Adding Natalie to the TOC helps to ensure the longevity of the project, and recognizes her extensive contributions across many of its components.</p><p>As a maintainer and team lead for the Implementation Team, Natalie has overseen a period of great innovation in the Buildpacks project. Her team is responsible for delivering <a href="https://buildpacks.io/docs/for-buildpack-authors/tutorials/basic-extension/">Extensions and Dockerfile support</a>, while ensuring the overall health of the <a href="https://github.com/buildpacks/lifecycle">buildpack lifecycle</a>. She’s now the all-time leading committer to the lifecycle. Natalie has also been able to help grow the project’s community as a mentor for programs including Google Summer of Code and the Linux Foundation Mentorships.</p><p>Natalie’s passion for all aspects of the project, from documentation to low-level engineering, help to ensure the high quality of experience we deliver. Even more importantly though, her kindness, fairness, and leadership help to make our community strong.</p><p>Congratulations Natalie!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ypQ40qLOpzlEVBHn7_pd3A.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=099c16ead962" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/natalie-arellano-joins-the-buildpack-toc-099c16ead962">Natalie Arellano joins the Buildpack TOC</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Buildpacks in Paris for KubeCon + CloudNativeCon Europe]]></title>
            <link>https://medium.com/buildpacks/buildpacks-in-paris-for-kubecon-cloudnativecon-europe-1b676f48130e?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/1b676f48130e</guid>
            <category><![CDATA[cloud-native]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[cncf]]></category>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <category><![CDATA[kubecon]]></category>
            <dc:creator><![CDATA[Nanci Lancaster]]></dc:creator>
            <pubDate>Thu, 14 Mar 2024 23:09:22 GMT</pubDate>
            <atom:updated>2024-03-19T22:38:33.938Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mzLYt4-16087LMX10Xc4pg.png" /></figure><p><a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/">KubeCon + CloudNativeCon Europe 2024</a> is NEXT WEEK and we’re so excited to see everyone in Paris! Below are the opportunities you have to attend talks covering Buildpacks to learn more about the project and engage with us and other members of the community. It’s a great way to ask questions, meet the team in person, provide feedback, and connect with others in the community. We look forward to seeing you there!</p><p><strong><em>Note: </em></strong><em>All times mentioned below are in Central European Time (CET), UTC +1</em></p><h3>Pre-Event Content — Tuesday, March 19</h3><h4>Sponsored Keynote at AppDeveloperCon</h4><p>10:20–10:25, Pavilion 7 | Level 7.3 | Room S04: <a href="https://sched.co/1YK5G">Streamlining Your Application Builds with Cloud Native Buildpacks — Vish Abrams, Heroku</a></p><p><strong>Note:</strong> You need an <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/register/#all-access-rates">all-access pass</a> to attend AppDeveloperCon, a co-located event.</p><h4>Project Lightning Talk</h4><p>11:30–11:37, Pavilion 7 | Level 7.1 | Room D: <a href="https://sched.co/1aQXF">Container Builds at Scale with Buildpacks — Joe Kutner, Salesforce</a></p><p><strong>Note:</strong> You DO NOT need an all-access pass to attend the <a href="https://kccnceu2024.sched.com/overview/type/Project+Opportunities">project lightning talks</a>. A regular in-person registration (<a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/register/#kubecon-cloudnativecon-only-rates">KubeCon + CloudNativeCon Only Pass</a>) is all that is required.</p><h3>Talks and Interactive Sessions — Main Conference</h3><h4>Wednesday, March 20</h4><ul><li><a href="https://sched.co/1YhIv"><em>Keynote: Platform Building Blocks: How to Build ML Infrastructure with CNCF Projects — Yuzhui Liu, Team Lead &amp; Leon Zhou, Software Engineer, Bloomberg</em></a><strong><br> — </strong>10:15–10:30<br> — Pavilion 7 | Level 7.3 | Paris Room</li><li><a href="https://sched.co/1YheV"><em>Contribfest: Diving Into Buildpacks: Improving the Pack CLI — Natalie Arellano, Broadcom &amp; Aidan Delaney, Bloomberg</em></a><strong><br> — </strong>14:30–16:00<br> — Pavilion 7 | Level 7.3 | W01</li><li><a href="https://sched.co/1YeMm"><em>Building AI-Ready Platforms — Symphony for Developer and Platform Engineer — Thomas Vitale, Systematic &amp; Lize Raes, LangChain4</em></a><strong><br></strong> — 15:25–16:00<br> — Pavilion 7 | Level 7.1 | Room B</li></ul><h4>Thursday, March 21</h4><ul><li><a href="https://sched.co/1Yhj6"><em>Maintainer Track Session: Container Image Workflows at Scale with Buildpacks — Juan Bustamante, Broadcom &amp; Aidan Delaney, Bloomberg</em></a><strong><br></strong> — 17:25–18:00<br> — Pavilion 7 | Level 7.3 | E01–02</li></ul><h4>Friday, March 22</h4><ul><li><a href="https://sched.co/1YeRB"><em>Building Container Images the Modern Way — Adrian Mouat, Chainguard</em></a><strong><br></strong> — 11:00–11:35<br> — Pavilion 7 | Level 7.3 | S05</li></ul><h3>Buildpacks Kiosk in the Project Pavilion</h3><p>The Buildpacks project will have a kiosk in the <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/project-engagement/#project-pavilion">Project Pavilion</a>, located in the <a href="https://kccnceu2024.sched.com/overview/type/Solutions+Showcase">Solutions Showcase</a>, during the afternoon times each day of the conference, starting on March 20. See below for more information on these staffed times and the kiosk location to know when to learn more about the project, ask questions, provide feedback, and meet the team.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HvqXXw2PuHCEz98Ye_JcDw.png" /><figcaption>We are kiosk PP12-A, as circled above.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GwoZNmbX08EQmQrvwfn9_w.jpeg" /><figcaption>Solutions Showcase map showing the project pavilion location.</figcaption></figure><p>The kiosk will be staffed by Buildpacks TOC members, maintainers, contributors, and community volunteers at the following times:</p><ul><li><strong>Wednesday, March 20<br> — </strong>15:00–18:00<br> — 18:00–20:00 (during <a href="https://sched.co/1ZnE9">KubeCrawl +CloudNativeFest</a>)</li><li><strong>Thursday, March 21<br> — </strong>13:30–17:00</li><li><strong>Friday, March 22<br> — </strong>12:30–14:30</li></ul><h3>Join the Buildpacks Community</h3><p>We are excited to hear from you and learn with you! Here are several ways you can get involved:</p><ul><li>Join Buildpacks’ slack channel, <a href="https://slack.cncf.io/">#buildpacks in CNCF workspace</a>, and connect with Buildpacks’ users.</li><li>Find us on <a href="https://github.com/buildpacks">GitHub</a>. Suggest how we can improve the project, the docs, or share any other feedback.</li><li>Attend our Community Meetings! Check out the <a href="https://buildpacks.io/community/">Community page</a> for full details on how to attend.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b676f48130e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/buildpacks-in-paris-for-kubecon-cloudnativecon-europe-1b676f48130e">Buildpacks in Paris for KubeCon + CloudNativeCon Europe</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Buildpacks in Chicago for KubeCon + CloudNativeCon North America]]></title>
            <link>https://medium.com/buildpacks/buildpacks-in-chicago-for-kubecon-cloudnativecon-north-america-585de14721b1?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/585de14721b1</guid>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[cloudnativecon]]></category>
            <category><![CDATA[kubecon]]></category>
            <category><![CDATA[cloud-native]]></category>
            <dc:creator><![CDATA[Nanci Lancaster]]></dc:creator>
            <pubDate>Thu, 02 Nov 2023 13:45:49 GMT</pubDate>
            <atom:updated>2023-11-02T13:45:49.730Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lSxy8qF41aPWUcYuhebJjw.png" /></figure><p>If you are attending <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/">KubeCon + CloudNativeCon North America</a> we’d love to meet you! Below are the opportunities you have to come engage with us and other members of the Buildpacks community. It’s a great way to ask questions, meet the team in person, provide feedback, and connect with others in the community. We look forward to seeing you there!</p><h4>In-Person Project Meeting</h4><p><em>Monday, November 6 • 1:00–3:00PM, Room Stutz (Hilton, level 3), Hilton Garden Inn McCormick Place (Connected to McCormick Place by skybridge. The skybridge at McCormick Place is on level 3.)</em></p><p>Join us for general welcome and introduction to Buildpacks. We’ll give an overview of the project and what the team is working on next. Then, we’ll open it up for anything folks wish to bring up: demo requests, feedback, feature requests, general discussions/questions.</p><p><strong>Note:</strong> You DO NOT need an all-access pass to attend a project meeting. A regular in-person registration is all that is required.</p><h4><a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/program/project-engagement/#project-pavilion">Project Pavilion</a></h4><p>Stop by our kiosk <strong>(#F11)</strong> in the project pavilion to say hello and grab some new swag! The pavilion will be staffed by TOC members, maintainers, contributors, and community volunteers at the following times:</p><ul><li><strong>Tuesday, November 7<br> — </strong>10:30AM–8:00PM (includes <a href="https://sched.co/1REGb">KubeCrawl +CloudNativeFest</a> from 6:00–8:00 PM)</li><li><strong>Wednesday, November 8<br> — </strong>10:30AM–5:00PM</li><li><strong>Thursday, November 9<br> — </strong>10:30AM–2:30PM</li></ul><h4><a href="https://kccnceu2023.sched.com/">Maintainer Track Breakout Session</a></h4><p><em>Thursday, November 9 • 2:00–2:35PM, Room W187 (McCormick Place)</em></p><p><a href="https://sched.co/1R2uq">Getting Buildpacks Ready for the Multi-Architecture Future</a> with Terence Lee, Heroku (Salesforce) &amp; Juan Bustamante, VMware</p><p>We will start with the basics of Buildpacks, Buildpack Platforms, and how one can easily distribute Buildpacks with Builder Images. ARM64 is known for being energy efficient and has gained popularity between Apples’ M1/2 chips and Amazon Web Services’ Graviton Processor. Supporting multi-architecture images is one of the top asks from the community. In this talk, we’ll discuss the challenges of supporting multi-architecture application images and how Buildpacks help solve this problem. We will show how this is possible with multi-architecture Buildpacks and Builder Images.</p><h4>Join the Buildpacks Community</h4><p>We are excited to hear from you and learn with you! Here are several ways you can get involved:</p><ul><li>Join Buildpack’s slack channel, <a href="https://slack.cncf.io/">#buildpacks in CNCF workspace</a>, and connect with Buildpack’s users.</li><li>Find us on <a href="https://github.com/buildpacks">GitHub</a>. Suggest how we can improve the project, the docs, or share any other feedback.</li><li>Attend our Community Meetings! Check out the <a href="https://buildpacks.io/community/">Community page</a> for full details on how to attend.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=585de14721b1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/buildpacks-in-chicago-for-kubecon-cloudnativecon-north-america-585de14721b1">Buildpacks in Chicago for KubeCon + CloudNativeCon North America</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Use Pack to export your image to disk in OCI layout format]]></title>
            <link>https://medium.com/buildpacks/use-pack-to-export-your-image-to-disk-in-oci-layout-format-837559d6a2e8?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/837559d6a2e8</guid>
            <category><![CDATA[docker-image]]></category>
            <category><![CDATA[pack]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <dc:creator><![CDATA[Juan Bustamante]]></dc:creator>
            <pubDate>Wed, 27 Sep 2023 13:38:55 GMT</pubDate>
            <atom:updated>2023-09-27T13:45:14.063Z</atom:updated>
            <content:encoded><![CDATA[<p>In <a href="https://github.com/buildpacks/pack/releases/tag/v0.30.0">pack v0.30.0</a> we added the <strong>experimental</strong> capability to export your application images to disk in OCI layout format. This feature will provide end-users with the freedom to inspect or modify their images before being pushed to a remote registry.</p><p>Let’s take a look at an example of how this might be valuable. After <a href="https://buildpacks.io/docs/features/experimental/export-to-oci-layout/">following the steps</a> to export the sample java application to OCI layout format on disk, we end up with something similar to:</p><pre><br>sample-app<br>├── blobs<br>│ └── sha256<br>│     ├── 141bfb0cd434d425bc70edb9e56ea11d07aed76450eb0e73e6110645f251a8d3<br>│     ├── 2fa192256ce255c6ea6c1296eadfe2feba8094f40e6aa85e699645caca2e85d8<br>│     ├── 5a44e4f7b58d74fe6f92dd7028075c91191128d1e2e7f39846fe061a9a98836e<br>│     ├── 72d9f18d70f395ff9bfae4d193077ccea3ca583e3da3dd66f5c84520c0100727<br>│     ├── 827746ec7ba80f4e4811b6c9195b6f810fbc2d58a6c9cc337bf0305791f24e97<br>│     ├── ad13830c92258c952f25d561d8bf7d9eb58b8a3003960db1502cbda8239130b5<br>│     ├── b97b58b190d5f731c879b0f7446a2bd554863b51851e03757199c74dd922ce61<br>│     ├── c44222730efa142cd5bedc0babf82a9a07d325494be7f5c3cfde56f43166b65f<br>│     ├── e1048fb89c3194a1f0542c0847aa086a7034dd7867c48fe8c93675cf36f90610<br>│     ├── f0a30c5bc44742065b1b4ffa95271a39994f05ba7a03dd7e7143d1d3e45fa0b1<br>│     └── f9d6350d0c44c0e7165a522155f53181ce8c163a6b8ead1f6baea22d1a8d8a78<br>├── index.json<br>└── oci-layout  <br><br>3 directories, 13 files</pre><p>Now we can use a tool like <a href="https://github.com/anchore/grype">grype</a> to scan a Java Application image and detect any vulnerabilities before pushing it to the registry or promoting it to a next step in our CI/CD pipeline.</p><pre>&gt; grype oci-dir:sample-app/<br> ✔ Vulnerability DB        [no update available]<br>New version of grype is available: 0.66.0 (currently running: 0.57.1)<br> ✔ Parsed image<br> ✔ Cataloged packages      [228 packages]<br> ✔ Scanned image           [87 vulnerabilities]<br><br>NAME               INSTALLED                 FIXED-IN        TYPE          VULNERABILITY        SEVERITY<br>bash               5.1-6ubuntu1                              deb           CVE-2022-3715        Low<br>coreutils          8.32-4.1ubuntu1                           deb           CVE-2016-2781        Low<br>gcc-12-base        12.3.0-1ubuntu1~22.04                     deb           CVE-2022-27943       Low<br>gpgv               2.2.27-3ubuntu2.1                         deb           CVE-2022-3219        Low<br>jackson-databind   2.9.10.6                                  java-archive  CVE-2020-25649       High<br>jackson-databind   2.9.10.6                                  java-archive  CVE-2020-35490       High</pre><p>In this way, we avoid needing to remove the vulnerable image after it’s already been stored in a registry (and potentially has been pulled by other systems).</p><p>Please join our slack <a href="https://slack.cncf.io/">channel</a> if you’d like to share comments about this feature, or if you’d like to discuss other interesting use cases that you have for a local OCI image.</p><p>If you want to know more, you can find all the details in Pack <a href="https://buildpacks.io/docs/features/experimental/export-to-oci-layout">documentation</a>.</p><h4>Join the Buildpack community</h4><p>We are excited to hear from you and learn with you! Here are several ways you can get involved:</p><ul><li>Join Buildpack’s slack channel, <a href="https://slack.cncf.io/">#buildpacks in CNCF</a> workspace, and connect with Buildpack’s users.</li><li>Find us on <a href="https://github.com/buildpacks">GitHub</a>. Suggest how we can improve the project, the docs, or share any other feedback.</li><li>Attend our Community Meetings! Check out the <a href="https://buildpacks.io/community/">Community page</a> for full details on how to attend.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=837559d6a2e8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/use-pack-to-export-your-image-to-disk-in-oci-layout-format-837559d6a2e8">Use Pack to export your image to disk in OCI layout format</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unpacking Cloud Native Buildpacks]]></title>
            <link>https://medium.com/buildpacks/unpacking-cloud-native-buildpacks-ff51b5a767bf?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/ff51b5a767bf</guid>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <category><![CDATA[cloud-native]]></category>
            <category><![CDATA[buildpack]]></category>
            <dc:creator><![CDATA[Domenico Luciani]]></dc:creator>
            <pubDate>Mon, 18 Sep 2023 16:06:21 GMT</pubDate>
            <atom:updated>2023-09-18T16:06:21.529Z</atom:updated>
            <content:encoded><![CDATA[<p>You can quickly run buildpacks using platforms like <a href="https://github.com/buildpacks/pack">pack</a> and <a href="https://github.com/buildpacks-community/kpack">kpack</a>, and for most people, this works great. But some buildpacks users, especially those maintaining their own platforms, may want more control over how the underlying buildpack lifecycle phases are executed.</p><p>The goal of this tutorial is to build a Bash application without using platform tools like pack or kpack. We will leverage the individual phases of the buildpack lifecycle to produce the application-run image.</p><blockquote><strong><em>Note</em></strong><em>: Depending on your computer architecture, the tutorial will have </em>slightly <em>different instructions.</em></blockquote><p>Let’s get started! 📚</p><h3>Getting started</h3><p>To begin this tutorial, we’ll need a local copy of the lifecycle and the official Buildpack.io samples:</p><pre>git clone https://github.com/buildpacks/lifecycle<br>git clone https://github.com/buildpacks/samples</pre><p><a href="https://github.com/buildpacks/lifecycle">The lifecycle</a> orchestrates buildpack execution and then assembles the resulting artifacts into a final app image. It is composed of multiple phases that need to be executed to have the final image built and exported.</p><p>Of course, we need to build the lifecycle in order to use all its phases. You can do it by going into the lifecycle directory and executing</p><blockquote><em>For AMD64 architectures</em></blockquote><pre>make build</pre><blockquote>For ARM64 architectures</blockquote><pre><br> make build-darwin-arm64</pre><h3>Important Environment Variables</h3><p>In order to execute the various phases correctly, we need to first set these environment variables:</p><pre>CNB_USER_ID<br>CNB_GROUP_ID<br>CNB_PLATFORM_API<br>CNB_SAMPLES_PATH<br>CNB_LIFECYCLE_PATH</pre><ul><li>CNB_USER_ID,CNB_GROUP_ID: The user and group ID are arbitrary values that need to be consistent. The usual value for both is 1000, which we can use through this tutorial.</li><li>CNB_PLATFORM_API: Platform API version will vary depending on your use case. This tutorial makes use of v0.12, which is <a href="https://github.com/buildpacks/spec/releases?q=platform">the most recent</a> at the time of writing this post.</li><li>CNB_SAMPLES_PATH: The path of our local samples directory</li><li>CNB_LIFECYCLE_PATH: The path of our local compiled lifecycle dir</li></ul><p>Run the following commands in the terminal to set these values:</p><pre>export CNB_USER_ID=1000 CNB_GROUP_ID=1000 CNB_PLATFORM_API=0.12<br>export CNB_SAMPLES_PATH=&quot;/&lt;your-path&gt;/samples&quot;<br>export CNB_LIFECYCLE_PATH=&quot;/&lt;your-path/lifecycle/out/&lt;your-arch&gt;/lifecycle&quot;`</pre><h3>Phases</h3><p>We are going to go through each of the <a href="https://buildpacks.io/docs/concepts/components/lifecycle/">lifecycle’s phases</a> except for the Creator which combines all of them in one go:</p><ol><li><a href="https://buildpacks.io/docs/concepts/components/lifecycle/analyze/">Analyze</a></li><li><a href="https://buildpacks.io/docs/concepts/components/lifecycle/detect/">Detect</a></li><li><a href="https://buildpacks.io/docs/concepts/components/lifecycle/restore/">Restore</a></li><li><a href="https://buildpacks.io/docs/concepts/components/lifecycle/build/">Build</a></li><li><a href="https://buildpacks.io/docs/concepts/components/lifecycle/export/">Export</a></li></ol><h3>Analyze</h3><blockquote><em>The analyze phase runs before the detect phase in order to validate registry access for all images that are used during the build as early as possible. In this way it provides faster failures for end users</em></blockquote><p>We need to create some directories</p><pre>mkdir -p apps/bash-script<br>mkdir -p layers</pre><p>Those commands will create two directories in the root called apps, which contains a bash-script directory, and layers. The layers directory contains subdirectories representing each layer created by the buildpack in the final image or build cache. Essentially it&#39;s our working directory</p><p>Then we need to copy the bash-script samples into our apps/bash-script directory. Here is where our app&#39;s source code will stay for simplicity.</p><pre>cp -r &quot;$CNB_SAMPLES_PATH/apps/bash-script/&quot; ./apps/bash-script</pre><p>Let’s call the analyzer:</p><blockquote><em>For AMD64 architectures</em></blockquote><pre>$CNB_LIFECYCLE_PATH/analyzer -log-level debug -daemon -layers=&quot;./layers&quot; -run-image cnbs/sample-stack-run:bionic apps/bash-script</pre><blockquote><em>For ARM64 architectures — the one I’m using in this tutorial</em></blockquote><pre>$CNB_LIFECYCLE_PATH/analyzer -log-level debug -daemon -layers=&quot;./layers&quot; -run-image arm64v8/ubuntu:latest apps/bash-script</pre><p>This command will run the analyzer with:</p><ul><li>a debug level of logging</li><li>pointing to our local docker daemon</li><li>pointing to our layers directory, which is the main lifecycle working dir</li><li>running the specified image</li><li>with the path to the app that we are analyzing</li></ul><h3>Output</h3><p>The output we will see looks like this one:</p><pre>❯ $CNB_LIFECYCLE_PATH/analyzer -log-level debug -daemon -layers=&quot;./layers&quot; -run-image cnbs/sample-stack-run:bionic apps/bash-script<br>Starting analyzer...<br>Parsing inputs...<br>Ensuring privileges...<br>Executing command...<br>Timer: Analyzer started at 2023-08-29T11:22:26+02:00<br>Image with name &quot;apps/bash-script&quot; not found<br>Found image with identifier &quot;96f1071770b9f69d475d73d2b033ac869e76fcf6f944116df94f1ffa4cb33e36&quot;<br>Timer: Analyzer ran for 216.833µs and ended at 2023-08-29T11:22:26+02:00<br>Run image info in analyzed metadata is:<br>{&quot;Reference&quot;:&quot;96f1071770b9f69d475d73d2b033ac869e76fcf6f944116df94f1ffa4cb33e36&quot;,&quot;Image&quot;:&quot;cnbs/sample-stack-run:bionic&quot;,&quot;Extend&quot;:false,&quot;target&quot;:{&quot;os&quot;:&quot;linux&quot;,&quot;arch&quot;:&quot;amd64&quot;}}</pre><p>Since we are using the Platform API v0.12, it is going to check if it has the right privileges, and now inside our layers directory we should have a analyzer.toml file with a bunch of null entries.</p><h3>Detector</h3><blockquote><em>The detector looks for an ordered group of buildpacks that will be used during the build phase</em></blockquote><p>The detector requires an order.toml being present in the root dir, let&#39;s craft a new one from samples builder.toml removing the stack section:</p><pre>cat &quot;$CNB_SAMPLES_PATH/builders/jammy/builder.toml&quot; | grep -v -i &quot;stack&quot; | sed &#39;s/\.\.\/\.\./\./&#39; &gt; order.toml</pre><p>An order.toml file contains a list of groups, and each group itself contains a list of buildpacks. The detector reads order.toml and looks for the first group that passes the detection process.</p><h3>Set buildpacks layout directory</h3><p>Let’s create a buildpacks dir in the root:</p><pre>mkdir -p buildpacks</pre><p>Then we need to populate it with the buildpacks we want or need. We have to follow the <a href="https://github.com/buildpacks/spec/blob/main/platform.md#buildpacks-directory-layout">directory layout defined in the buildpack spec</a>, where each top-level directory is a buildpack ID and each second-level directory is a buildpack version.</p><p>For example, the samples/java-maven buildpack:</p><pre>mkdir -p buildpacks/samples_java-maven/0.0.1<br>cp -r $CNB_SAMPLES_PATH/buildpacks/java-maven/* buildpacks/samples_java-maven/0.0.1/</pre><p>Let’s do that for every buildpack in the samples/buildpacks directory:</p><pre>for f in `ls --color=no $CNB_SAMPLES_PATH/buildpacks | grep -v README`<br>do<br>    mkdir -p ./buildpacks/samples_&quot;$f&quot;/0.0.1<br>    cp -r &quot;$CNB_SAMPLES_PATH/buildpacks/$f/&quot; ./buildpacks/samples_&quot;$f&quot;/0.0.1/<br>done</pre><h3>Run the Detector</h3><pre>$CNB_LIFECYCLE_PATH/detector -log-level debug -layers=&quot;./layers&quot; -order=&quot;./order.toml&quot; -buildpacks=&quot;./buildpacks&quot; -app apps/bash-script</pre><h3>Output</h3><p>We should get something like this:</p><pre>$CNB_LIFECYCLE_PATH/detector -log-level debug -layers=&quot;./layers&quot; -order=&quot;./order.toml&quot; -buildpacks=&quot;./buildpacks&quot; -app apps/bash-script<br>Starting detector...<br>Parsing inputs...<br>Ensuring privileges...<br>Executing command...<br>Timer: Detector started at 2023-08-29T12:27:19+02:00<br>======== Results ========<br>fail: samples/java-maven@0.0.1<br>======== Results ========<br>fail: samples/kotlin-gradle@0.0.1<br>======== Results ========<br>fail: samples/ruby-bundler@0.0.1<br>======== Results ========<br>pass: samples/hello-world@0.0.1<br>pass: samples/hello-moon@0.0.1<br>Resolving plan... (try #1)<br>samples/hello-world 0.0.1<br>samples/hello-moon  0.0.1<br>Timer: Detector ran for 974.819292ms and ended at 2023-08-29T12:27:20+02:00</pre><p>Between the output files, we should have a group.toml and a plan.toml file</p><p>The groups that have passed the detection have been written into the group.tomlfile writing its build plan into the plan.tomlfile.</p><p>Here if you want to read more about the <a href="https://buildpacks.io/docs/concepts/components/lifecycle/detect/#grouptoml">group</a> and <a href="https://buildpacks.io/docs/concepts/components/lifecycle/detect/#plantoml">plan</a> toml files.</p><h3>Restorer</h3><p>This phase is mostly about bringing things out of the cache if anything is in there.</p><p>Let’s create the cache directory</p><pre>mkdir cache</pre><p>and then let’s run the restorer:</p><pre>$CNB_LIFECYCLE_PATH/restorer -log-level debug -layers=&quot;./layers&quot; -group=&quot;./layers/group.toml&quot; -cache-dir=&quot;./cache&quot; -analyzed=&quot;./layers/analyzed.toml&quot;</pre><h3>Output</h3><p>Getting back something like this:</p><pre>Starting restorer...<br>Parsing inputs...<br>Ensuring privileges...<br>Executing command...<br>Timer: Restorer started at 2023-08-30T17:10:54+02:00<br>Restoring Layer Metadata<br>Reading buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-world<br>Reading buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-moon<br>Reading Buildpack Layers directory &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers<br>Reading buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-world<br>Reading Buildpack Layers directory &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers<br>Reading buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-moon<br>Timer: Restorer ran for 832.458µs and ended at 2023-08-30T17:10:54+02:00</pre><p>The cache directory should now be populated by 2 sub-dirs:committed and staging.</p><h3>Builder</h3><blockquote><em>The builder transforms application source code into runnable artifacts that can be packaged into a container.</em></blockquote><p>As a pre-request to run the builder, we first need to create two directories:</p><pre>mkdir -p platform<br>mkdir -p workspace</pre><ul><li>platform is where we store configurations and env variables</li><li>workspace is where we store our app source code and where we build it</li></ul><p>Let’s copy the source code from the app directory to the workspace dir:</p><pre>cp -r apps/bash-script/* ./workspace</pre><p>Let’s create a launcher file with the instructions to run our application:</p><pre>cat &lt;&lt; EOF &gt; ./layers/samples_hello-moon/launch.toml<br>[[processes]]<br>  type = &quot;shell&quot;<br>  command = [&quot;./app.sh&quot;]<br>EOF</pre><p>Let’s run the builder:</p><pre>$CNB_LIFECYCLE_PATH/builder -log-level debug -layers=&quot;./layers&quot; -group=&quot;./layers/group.toml&quot; -analyzed=&quot;./layers/analyzed.toml&quot; -plan=&quot;./layers/plan.toml&quot; -buildpacks=&quot;./buildpacks&quot; -app=&quot;./workspace&quot; -platform=&quot;./platform&quot;</pre><h3>Output</h3><pre>Starting builder...<br>Parsing inputs...<br>Ensuring privileges...<br>Executing command...<br>Timer: Builder started at 2023-08-30T17:16:43+02:00<br>Running build for buildpack samples/hello-world@0.0.1<br>Looking up buildpack<br>Finding plan<br>Creating plan directory<br>Preparing paths<br>Running build command<br>---&gt; Hello World buildpack<br>     platform_dir files:<br>       total 0<br>       drwxr-xr-x  2 dluciani  staff   64 Aug 30 17:14 .<br>       drwxr-xr-x  9 dluciani  staff  288 Aug 30 17:14 ..<br>     env_dir: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/platform/env<br>     env vars:<br>       declare -x CNB_BP_PLAN_PATH=&quot;/var/folders/y5/tcnd_s55369g9v5crnmg2t040000gp/T/samples_hello-world-3790526309/samples_hello-world/plan.toml&quot;<br>       declare -x CNB_BUILDPACK_DIR=&quot;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/buildpacks/samples_hello-world/0.0.1&quot;<br>       declare -x CNB_LAYERS_DIR=&quot;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-world&quot;<br>       declare -x CNB_PLATFORM_DIR=&quot;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/platform&quot;<br>       declare -x CNB_TARGET_ARCH=&quot;amd64&quot;<br>       declare -x CNB_TARGET_ARCH_VARIANT=&quot;&quot;<br>       declare -x CNB_TARGET_DISTRO_NAME=&quot;&quot;<br>       declare -x CNB_TARGET_DISTRO_VERSION=&quot;&quot;<br>       declare -x CNB_TARGET_OS=&quot;linux&quot;<br>       declare -x HOME=&quot;&lt;REDACTED&gt;&quot;<br>       declare -x OLDPWD<br>       declare -x PATH=&quot;&lt;REDACTED&gt;&quot;<br>       declare -x PWD=&quot;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/workspace&quot;<br>       declare -x SHLVL=&quot;1&quot;<br>     layers_dir: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-world<br>     plan_path: /var/folders/y5/tcnd_s55369g9v5crnmg2t040000gp/T/samples_hello-world-3790526309/samples_hello-world/plan.toml<br>     plan contents:<br>       [[entries]]<br>         name = &quot;some-world&quot;       [[entries]]<br>         name = &quot;some-world&quot;<br>         [entries.metadata]<br>           world = &quot;Earth-616&quot;<br>---&gt; Done<br>Processing layers<br>Updating environment<br>Reading output files<br>Updating buildpack processes<br>Updating process list<br>Finished running build for buildpack samples/hello-world@0.0.1<br>Running build for buildpack samples/hello-moon@0.0.1<br>Looking up buildpack<br>Finding plan<br>Creating plan directory<br>Preparing paths<br>Running build command<br>---&gt; Hello Moon buildpack<br>     env_dir: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/platform/env<br>     env vars:<br>       declare -x CNB_BP_PLAN_PATH=&quot;/var/folders/y5/tcnd_s55369g9v5crnmg2t040000gp/T/samples_hello-moon-3263588455/samples_hello-moon/plan.toml&quot;<br>       declare -x CNB_BUILDPACK_DIR=&quot;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/buildpacks/samples_hello-moon/0.0.1&quot;<br>       declare -x CNB_LAYERS_DIR=&quot;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-moon&quot;<br>       declare -x CNB_PLATFORM_DIR=&quot;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/platform&quot;<br>       declare -x CNB_TARGET_ARCH=&quot;amd64&quot;<br>       declare -x CNB_TARGET_ARCH_VARIANT=&quot;&quot;<br>       declare -x CNB_TARGET_DISTRO_NAME=&quot;&quot;<br>       declare -x CNB_TARGET_DISTRO_VERSION=&quot;&quot;<br>       declare -x CNB_TARGET_OS=&quot;linux&quot;<br>       declare -x HOME=&quot;&lt;REDACTED&gt;&quot;<br>       declare -x OLDPWD<br>       declare -x PATH=&quot;&lt;REDACTED&gt;&quot;<br>       declare -x PWD=&quot;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/workspace&quot;<br>       declare -x SHLVL=&quot;1&quot;<br>     layers_dir: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-moon<br>     plan_path: /var/folders/y5/tcnd_s55369g9v5crnmg2t040000gp/T/samples_hello-moon-3263588455/samples_hello-moon/plan.toml<br>     plan contents:<br>---&gt; Done<br>Processing layers<br>Updating environment<br>Reading output files<br>Updating buildpack processes<br>Updating process list<br>Finished running build for buildpack samples/hello-moon@0.0.1<br>Copying SBOM files<br>Creating SBOM files for legacy BOM<br>Listing processes<br>Timer: Builder ran for 2.304770458s and ended at 2023-08-30T17:16:45+02:00</pre><p>As you can read from the output we have built the two buildpacks that we need in order to run our bash-script application. And now in our layers directory we should find other directories like the two from our buildpacks, a config and a sbom ones.</p><h3>Export</h3><p>We need to export the artifacts built by the builder, but first, we need to specify the path of the launcher that our image is going to run:</p><blockquote><em>For AMD64 architectures</em></blockquote><pre>export CNB_LINUX_LAUNCHER_PATH=/&lt;your-path&gt;/lifecycle/out/linux-amd64/lifecycle/launcher</pre><blockquote><em>For ARM64 Architectures</em></blockquote><pre>export CNB_LINUX_LAUNCHER_PATH=/&lt;your-path&gt;/lifecycle/out/linux-arm64/lifecycle/launcher</pre><p><em>And then let’s run the exporter:</em></p><pre>$CNB_LIFECYCLE_PATH/exporter --log-level debug -launch-cache &quot;./cache&quot; -daemon -cache-dir &quot;./cache&quot; -analyzed &quot;./layers/analyzed.toml&quot; -group &quot;./layers/group.toml&quot; -layers=&quot;./layers&quot; -app &quot;./workspace&quot; -launcher=&quot;$CNB_LINUX_LAUNCHER_PATH&quot; -process-type=&quot;shell&quot; apps/bash-script</pre><p>The output should be something like this one:</p><pre>Starting exporter...<br>Parsing inputs...<br>Ensuring privileges...<br>Executing command...<br>no project metadata found at path &#39;./layers/project-metadata.toml&#39;, project metadata will not be exported<br>no run metadata found at path &#39;/cnb/run.toml&#39;<br>Timer: Exporter started at 2023-08-30T17:28:46+02:00<br>Warning: Did not find SBOM lifecycle.sbom.cdx.json in /cnb/lifecycle<br>Warning: Did not find SBOM lifecycle.sbom.spdx.json in /cnb/lifecycle<br>Warning: Did not find SBOM lifecycle.sbom.syft.json in /cnb/lifecycle<br>Warning: Did not find SBOM launcher.sbom.cdx.json in /cnb/lifecycle<br>Warning: Did not find SBOM launcher.sbom.spdx.json in /cnb/lifecycle<br>Warning: Did not find SBOM launcher.sbom.syft.json in /cnb/lifecycle<br>Reading buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-world<br>Processing buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-world<br>Reading buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-moon<br>Processing buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-moon<br>Found SBOM of type launch for at &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/sbom/launch<br>Reusing tarball for layer &quot;buildpacksio/lifecycle:launch.sbom&quot; with SHA: sha256:1ad83289f52becaf87159706f663d11b0871e0889d14b6f9fcff7938bb7d7a18<br>Adding layer &#39;buildpacksio/lifecycle:launch.sbom&#39;<br>Layer &#39;buildpacksio/lifecycle:launch.sbom&#39; SHA: sha256:1ad83289f52becaf87159706f663d11b0871e0889d14b6f9fcff7938bb7d7a18<br>Layer &#39;slice-1&#39; SHA: sha256:fff5756b235cc98a7c89c9d059e26847773151a60f0ef269ef9721606ac16f8a<br>Adding 1/1 app layer(s)<br>Reusing tarball for layer &quot;buildpacksio/lifecycle:launcher&quot; with SHA: sha256:ef23d3a8631f2cc87faf9fadca65fcb1bcea64ab217c614f28d52c54bfffbbbd<br>Adding layer &#39;buildpacksio/lifecycle:launcher&#39;<br>Layer &#39;buildpacksio/lifecycle:launcher&#39; SHA: sha256:ef23d3a8631f2cc87faf9fadca65fcb1bcea64ab217c614f28d52c54bfffbbbd<br>Reusing tarball for layer &quot;buildpacksio/lifecycle:config&quot; with SHA: sha256:87f8a5a44bf99c09d22f06e7a0cede09dfefb3abd057071c150687bf01e0e645<br>Adding layer &#39;buildpacksio/lifecycle:config&#39;<br>Layer &#39;buildpacksio/lifecycle:config&#39; SHA: sha256:87f8a5a44bf99c09d22f06e7a0cede09dfefb3abd057071c150687bf01e0e645<br>Adding label &#39;io.buildpacks.lifecycle.metadata&#39;<br>Adding label &#39;io.buildpacks.build.metadata&#39;<br>Adding label &#39;io.buildpacks.project.metadata&#39;<br>Setting CNB_LAYERS_DIR=&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers<br>Setting CNB_APP_DIR=&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/workspace<br>Setting CNB_PLATFORM_API=0.12<br>Setting CNB_DEPRECATION_MODE=quiet<br>Prepending /cnb/process and /cnb/lifecycle to PATH<br>Setting WORKDIR: &#39;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/workspace&#39;<br>no default process type<br>Setting ENTRYPOINT: &#39;/cnb/lifecycle/launcher&#39;<br>Timer: Saving apps/bash-script... started at 2023-08-30T17:28:46+02:00<br>*** Images (adaa8f978697):<br>      apps/bash-script*** Image ID: adaa8f9786976dabc271ab280daabf11d3fa55c667e36c0b7d05c9977a6c8365<br>Timer: Saving apps/bash-script... ran for 66.341292ms and ended at 2023-08-30T17:28:46+02:00<br>Timer: Exporter ran for 92.022541ms and ended at 2023-08-30T17:28:46+02:00<br>Timer: Cache started at 2023-08-30T17:28:46+02:00<br>Reading buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-world<br>Reading buildpack directory: &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/layers/samples_hello-moon<br>Timer: Cache ran for 1.154042ms and ended at 2023-08-30T17:28:46+02:00<br>Warning: Failed to export cache: setting cache metadata: creating metadata file &#39;&lt;REDACTED&gt;/github.com/dlion/unpackingCNB/cache/staging/io.buildpacks.lifecycle.cache.metadata&#39;: open &lt;REDACTED&gt;/github.com/dlion/unpackingCNB/cache/staging/io.buildpacks.lifecycle.cache.metadata: no such file or directory</pre><p>Finally, our image has been exported correctly, which we can verify by running the docker images command.</p><p>Let’s run our image:</p><pre>❯ docker run -it apps/bash-script ./app.sh</pre><pre>    |&#39;-_ _-&#39;|       ____          _  _      _                      _             _<br>    |   |   |      |  _ \        (_)| |    | |                    | |           (_)<br>     &#39;-_|_-&#39;       | |_) | _   _  _ | |  __| | _ __    __ _   ___ | | __ ___     _   ___<br>|&#39;-_ _-&#39;|&#39;-_ _-&#39;|  |  _ &lt; | | | || || | / _` ||&#39;_ \  / _\ | / __|| |/ // __|   | | / _ \<br>|   |   |   |   |  | |_) || |_| || || || (_| || |_) || (_| || (__ |   &lt; \__ \ _ | || (_) |<br> &#39;-_|_-&#39; &#39;-_|_-&#39;   |____/  \__,_||_||_| \__,_|| .__/  \__,_| \___||_|\_\|___/(_)|_| \___/<br>                                              | |<br>                                              |_|<br></pre><pre>Here are the contents of the current working directory:<br>.:<br>total 24<br>drwxr-xr-x 3 1000    1000 4096 Jan  1  1980 .<br>drwxr-xr-x 1  502 dialout 4096 Jan  1  1980 ..<br>-rw-r--r-- 1 1000    1000  692 Jan  1  1980 README.md<br>-rwxr-xr-x 1 1000    1000  736 Jan  1  1980 app.sh<br>drwxr-xr-x 3 1000    1000 4096 Jan  1  1980 bash-script-buildpack<br>-rw-r--r-- 1 1000    1000  202 Jan  1  1980 project.toml</pre><pre>./bash-script-buildpack:<br>total 16<br>drwxr-xr-x 3 1000 1000 4096 Jan  1  1980 .<br>drwxr-xr-x 3 1000 1000 4096 Jan  1  1980 ..<br>drwxr-xr-x 2 1000 1000 4096 Jan  1  1980 bin<br>-rw-r--r-- 1 1000 1000  350 Jan  1  1980 buildpack.toml</pre><pre>./bash-script-buildpack/bin:<br>total 16<br>drwxr-xr-x 2 1000 1000 4096 Jan  1  1980 .<br>drwxr-xr-x 3 1000 1000 4096 Jan  1  1980 ..<br>-rwxr-xr-x 1 1000 1000  330 Jan  1  1980 build<br>-rwxr-xr-x 1 1000 1000  242 Jan  1  1980 detect</pre><p>This tutorial should have provided you with a comprehensive overview of the process of using Buildpacks to create container images. You are now ready to explore this technology further and adapt it to your application development and deployment needs. 🚀</p><h3>Thank you</h3><p>I’d like to mention <a href="https://github.com/joe-kimmel-vmw">Joe Kimmel</a> who drafted the first version of this tutorial. <a href="https://github.com/navdeep-pama">Navdeep Pama</a>, <a href="https://github.com/natalieparellano">Natalie Arellano</a>, <a href="https://github.com/jkutner">Joe Kutner</a>, and <a href="https://github.com/jjbustamante">Juan Bustamante</a> who reviewed and contributed to this tutorial, their insights and expertise were invaluable in bringing this tutorial to fruition.</p><p>If you have any questions or feedback, please don’t hesitate to reach out. Your engagement is what keeps our community vibrant and thriving. Thank you for joining us on this educational adventure, and we look forward to sharing more insights with you in the future. 👋🏻</p><p><a href="https://github.com/dlion">Domenico Luciani</a>, Sr. Software Engineer @ <a href="https://vmware.com/">VMware</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ff51b5a767bf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/unpacking-cloud-native-buildpacks-ff51b5a767bf">Unpacking Cloud Native Buildpacks</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[kpack joins the Buildpacks Community Organization]]></title>
            <link>https://medium.com/buildpacks/kpack-joins-the-buildpacks-community-organization-223e59bda951?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/223e59bda951</guid>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[community]]></category>
            <category><![CDATA[cncf]]></category>
            <category><![CDATA[vmware]]></category>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <dc:creator><![CDATA[Sambhav Kothari]]></dc:creator>
            <pubDate>Thu, 10 Aug 2023 18:35:13 GMT</pubDate>
            <atom:updated>2023-08-10T18:35:13.715Z</atom:updated>
            <content:encoded><![CDATA[<p>We announced the <a href="https://medium.com/buildpacks/introducing-the-buildpack-community-organization-9d5495c4e982">Buildpacks Community organization a few months ago</a> as a vendor-neutral organization for trusted Buildpack integrations maintained by our ever-growing community.</p><p>The <a href="https://github.com/buildpacks">Buildpacks project</a> is thrilled to announce the donation of <a href="https://github.com/buildpacks-community/kpack">kpack</a>, a Kubernetes-based Buildpacks platform that has been part of the Buildpacks community for years, to the <a href="https://github.com/buildpacks-community">Buildpacks Community GitHub organization</a>. This is a big milestone for the Buildpacks project, as it is our first major community project.</p><figure><img alt="kpack — Kubernetes Native Container Build Service" src="https://cdn-images-1.medium.com/max/208/1*vaSR3NSW4JAdLtVWzRkY-w.png" /><figcaption><a href="https://github.com/buildpacks-community/kpack">kpack — Kubernetes Native Container Build Service</a></figcaption></figure><h3>Why this is exciting</h3><p>The donation of kpack to the Buildpacks Community org is an exciting prospect for multiple reasons.</p><p><strong>An out-of-the-box Kubernetes integration</strong>: As a <a href="https://www.cncf.io/">Cloud Native Computing Foundation</a> (CNCF) incubating project, <a href="https://github.com/buildpacks/community/blob/main/roadmaps/2021.md#integration-with-the-cloud-native-ecosystem">having a first-class Kubernetes integration has been on our roadmap for a while now</a>. Kpack allows you to truly scale the capabilities that Buildpacks provides and makes it a breeze to manage a large fleet of applications — whether it is building a multi-tenant zero-privilege container building solution or <a href="https://youtu.be/bpshvqQMYM0?t=963">mitigating vulnerabilities through our powerful rebase operation for thousands of images in a matter of minutes.</a></p><p><strong>A vendor-neutral project</strong>: kpack is an open source software project that originated at <a href="https://tanzu.vmware.com/content/blog/introducing-kpack-a-kubernetes-native-container-build-service">Pivotal</a>, a company that was acquired by <a href="https://www.vmware.com/">VMware</a> in December 2019. By donating kpack to the Buildpacks Community Organization, VMware hopes to ensure the project will remain vendor-neutral. This is important to the Buildpacks community, as we believe that Cloud Native Buildpacks should be accessible and open to contributions by everyone, regardless of their vendor preferences or affiliations. This is evidenced by the fact that the maintainer pool for kpack is already growing and diversifying (one of the key indicators of a mature project according to CNCF) with <a href="https://github.com/buildpacks-community/kpack/pull/1252">the recent addition of Bloomberg</a>, an end-user organization that is an active contributor to the project.</p><h3>Opportunities for the Community</h3><p>The inclusion of kpack under the Buildpacks (CNCF) umbrella will provide a number of opportunities for the community, including:</p><p><strong>Increased adoption</strong>: The donation of kpack to CNCF will make it more likely that users will adopt kpack and, in-turn, Cloud Native Buildpacks on Kubernetes.</p><p><strong>Improved efficiency</strong>: The donation of kpack will help ensure that the roadmaps of both kpack and Cloud Native Buildpacks are closely aligned. This will make it easier to coordinate efforts between the two communities and improve the overall user experience.</p><p><strong>New features and capabilities</strong>: The donation of kpack gives the Buildpacks community an opportunity to add new features and capabilities to the project. This will help make kpack even more powerful and versatile.</p><h3>Conclusion</h3><p>Buildpacks is excited to welcome kpack to our community organization. We believe this donation is a major milestone for the Cloud Native Buildpacks project, and we are grateful to VMware for its support. We look forward to working with the kpack community to make this project a success.</p><h3>Get involved</h3><p>We are excited to hear from you and learn with you! Here are several ways you can engage with us and the rest of the Buildpacks community:</p><ul><li>Join the Buildpacks slack channel, <a href="https://cloud-native.slack.com/archives/C033DV8D9FB">#buildpacks</a> in the CNCF workspace.</li><li>Join the kpack slack channel, <a href="https://cloud-native.slack.com/archives/C05GETJ2NP7">#buildpacks-kpack</a> in the CNCF workspace</li><li>Find us on <a href="https://github.com/buildpacks-community/kpack">GitHub</a>. Suggest how we can improve the project, the docs, or share any other feedback.</li><li>Attend our Community Meetings! Check out the <a href="https://buildpacks.io/community/">Community page</a> for full details on how to attend.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=223e59bda951" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/kpack-joins-the-buildpacks-community-organization-223e59bda951">kpack joins the Buildpacks Community Organization</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introducing the Buildpack Community organization]]></title>
            <link>https://medium.com/buildpacks/introducing-the-buildpack-community-organization-9d5495c4e982?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/9d5495c4e982</guid>
            <category><![CDATA[open-source-software]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[cloud-native]]></category>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <dc:creator><![CDATA[Juan Bustamante]]></dc:creator>
            <pubDate>Tue, 18 Apr 2023 07:01:24 GMT</pubDate>
            <atom:updated>2023-04-18T07:01:24.316Z</atom:updated>
            <content:encoded><![CDATA[<p>Our adopters and contributors have grown substantially over the last several years, but until now the Cloud Native Buildpacks project has not had a structure that would allow us to foster partner projects. That’s why we’re creating a new organization.</p><p>The <a href="https://github.com/buildpacks-community/">Buildpacks Community</a> organization is a vendor-neutral Github organization where the community provides trusted <a href="https://buildpacks.io">Cloud Native Buildpacks</a> tooling, platforms, and integrations.</p><p>The community org will provide a staging area to incubate new technologies and projects that solve common yet still relatively niche problems that are not suitable to be added to the core <a href="https://github.com/buildpacks">Buildpacks</a> organization.</p><p>For a project to be admitted to the Buildpacks community organization, it must meet several criteria, but the first step is to create a Github issue in the <a href="https://github.com/buildpacks-community/community">Buildpacks Community</a> repository. Once it is mature enough to be part of the core Buildpacks organization, the project maintainers can request for the project to be graduated into the core Buildpacks organization.</p><p>If you want to know more, you can find all the details in the <a href="https://github.com/buildpacks/rfcs/blob/main/text/0117-buildpacks-community.md">RFC</a>.</p><h4>Join the Buildpack community</h4><p>We are excited to hear from you and learn with you! Here are several ways you can get involved:</p><ul><li>Join Buildpack’s slack channel, <a href="https://slack.cncf.io/">#buildpacks in CNCF</a> workspace, and connect with Buildpack’s users.</li><li>Find us on <a href="https://github.com/buildpacks">GitHub</a>. Suggest how we can improve the project, the docs, or share any other feedback.</li><li>Attend our Community Meetings! Check out the <a href="https://buildpacks.io/community/">Community page</a> for full details on how to attend.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9d5495c4e982" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/introducing-the-buildpack-community-organization-9d5495c4e982">Introducing the Buildpack Community organization</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Buildpacks in Amsterdam for KubeCon + CloudNativeCon Europe]]></title>
            <link>https://medium.com/buildpacks/buildpacks-in-amsterdam-for-kubecon-cloudnativecon-europe-93f960551086?source=rss----f4d6454791bd---4</link>
            <guid isPermaLink="false">https://medium.com/p/93f960551086</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[cloud-native-buildpacks]]></category>
            <category><![CDATA[kubecon]]></category>
            <category><![CDATA[open-source]]></category>
            <dc:creator><![CDATA[Nanci Lancaster]]></dc:creator>
            <pubDate>Wed, 12 Apr 2023 22:09:33 GMT</pubDate>
            <atom:updated>2023-04-12T22:19:53.516Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HLg6hXYrNc6F8dp1R_Ru4A.png" /></figure><p>Are you ready for <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/">KubeCon + CloudNativeCon Europe</a>?! This year’s European flagship event is especially meaningful because in March 2020, we were all set to head to Amsterdam for that year’s KubeCon Europe, but like many other events it had to be canceled. We are finally making the trek to The Netherlands next week to engage with the cloud native community and we couldn’t be more excited to see everyone!</p><p>See below for all the opportunities to engage with us and the rest of the Cloud Native Buildpacks community in Amsterdam.</p><p><strong><em>Note: </em></strong><em>All times mentioned below are in Central European Summer Time (CEST), UTC +2</em></p><h4><a href="https://sched.co/1JWQ0">In-Person Project Meeting</a></h4><p><em>Tuesday, April 18 • 10:30–12:30 CEST, Room D303, Congress Center</em></p><p>Join us for general welcome and introduction to Buildpacks. We’ll give an overview of the project and review our roadmap for the first half of the year. Then we’ll discuss some special topics including Dockerfile Extensions, Stack Removal, and Execution Environments + Testing. Finally, we’ll leave some time for Q&amp;A.</p><p><strong>Note:</strong> You DO NOT need an all-access pass to attend a project meeting. A regular in-person registration is all that is required.</p><h4><a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/project-engagement/#project-pavilion">Project Pavilion</a></h4><p>Stop by our kiosk <strong>(#K16)</strong> in the project pavilion to say hello and grab some new swag! The pavilion will be staffed by TOC members, maintainers, contributors, and community volunteers at the following times:</p><ul><li><strong>Wednesday, April 19<br> — </strong>16:00–18:00<br> — 18:00–21:00 (during <a href="https://sched.co/1IEtY">KubeCrawl +CloudNativeFest</a>)</li><li><strong>Thursday, April 20<br> — </strong>14:30–17:30</li><li><strong>Friday, April 21<br> — </strong>12:30–14:30</li></ul><h4><a href="https://kccnceu2023.sched.com/">Maintainer Track and Breakout Sessions</a></h4><p>Our team and community will deliver three talks covering Buildpacks and its applications:</p><ul><li><a href="https://sched.co/1HyWm"><em>Choose Your Own Adventure: The Treacherous Trek to Development</em></a> with Whitney Lee, VMware &amp; Viktor Farcic, Upbound<br> — <strong>Wednesday, April 19 @ 14:30–15:05</strong></li><li><a href="https://sched.co/1HyTO"><em>Customizing Your Buildpacks Build — Yes You Can!</em></a> with Natalie Arellano, VMware &amp; Aidan Delaney, Bloomberg<br> — <strong>Wednesday, April 19 @ 16:30–17:05</strong></li><li><a href="https://sched.co/1HybE"><em>Processing of Amsterdam City Data with Vendor Agnostic Serverless Functions</em></a> with Mohit Suman &amp; Zbynek Roubalik, Red Hat<br>- <strong>Thursday, April 20 @ 15:25–16:00</strong></li></ul><h4><a href="https://kccnceu2023.sched.com/overview/type/Solutions+Showcase">Solutions Showcase</a></h4><p><strong>VMware Booth Theater Demos</strong><br>Thursday, April 20, 16:30–17:00 — <em>From Source Code to Container: Exploring Cloud Native Buildpacks </em>with Natalie Arellano, Buildpacks Maintainer</p><h4>Join the Buildpacks Community</h4><p>We are excited to hear from you and learn with you! Here are several ways you can get involved:</p><ul><li>Join Buildpack’s slack channel, <a href="https://slack.cncf.io/">#buildpacks in CNCF workspace</a>, and connect with Buildpack’s users.</li><li>Find us on <a href="https://github.com/buildpacks">GitHub</a>. Suggest how we can improve the project, the docs, or share any other feedback.</li><li>Attend our Community Meetings! Check out the <a href="https://buildpacks.io/community/">Community page</a> for full details on how to attend.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=93f960551086" width="1" height="1" alt=""><hr><p><a href="https://medium.com/buildpacks/buildpacks-in-amsterdam-for-kubecon-cloudnativecon-europe-93f960551086">Buildpacks in Amsterdam for KubeCon + CloudNativeCon Europe</a> was originally published in <a href="https://medium.com/buildpacks">Buildpacks</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>