<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>#Continuous Deployment — Seconds to Midnight</title><description>Content tagged with #Continuous Deployment.</description><link>https://dbuho.me</link><language>en</language><copyright>© 2026 Damián Búho</copyright><managingEditor>damian.buho@proton.me (Damián Búho)</managingEditor><webMaster>damian.buho@proton.me (Damián Búho)</webMaster><lastBuildDate>Thu, 12 Nov 2026 16:25:24 GMT</lastBuildDate><category>Resilience</category><ttl>60</ttl><image><url>https://dbuho.me/favicon-48x48.png</url><title>#Continuous Deployment — Seconds to Midnight</title><link>https://dbuho.me</link></image><atom:link rel="self" type="application/rss+xml" href="https://dbuho.me/tags/continuous-deployment.rss"/><item><title>Post: What is B19 images and how I wrap things in containers</title><link>https://dbuho.me/post/what-is-b19/?utm_source=tag-continuous-deployment&amp;utm_medium=rss</link><guid isPermaLink="false">01M3DBSDTEQ9SDFATFNBFXEQ7B</guid><description>A big part of my portfolio consists of so-called b19-style images. (b19 means nothing—you just can&amp;#39;t get a proper namespace these days.) It started as an internal effort for my personal and commercial projects, but ended up as a set of conventions unified across 100+ various images (both wrappers and originals). I wanted every container to behave in a predictable way, agnostic of the tech stack, whether it&amp;#39;s a source-based or upstream-based project. I&amp;#39;m not urging anyone to adopt this directly yet—I need some time in public to polish everything—but if you&amp;#39;re tasked with a similar unification job or manage a fleet, feel free to steal the conventions. The conventions are anchored in B19/Ubuntu and flow organically into all downstream projects. The conventions are unopinionated (though the defaults can be). What&amp;#39;s inside?</description><pubDate>Tue, 09 Jun 2026 02:59:00 GMT</pubDate><content:encoded>&lt;p&gt;A big part of my portfolio consists of so-called b19-style images.&lt;br /&gt;
&lt;em&gt;(b19 means nothing—you just can&amp;#39;t get a proper namespace these days.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It started as an internal effort for my personal and commercial projects, but ended up as a set of conventions unified across 100+ various images (both wrappers and originals). I wanted every container to behave in a predictable way, agnostic of the tech stack, whether it&amp;#39;s a source-based or upstream-based project.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m not urging anyone to adopt this directly yet—I need some time in public to polish everything—but if you&amp;#39;re tasked with a similar unification job or manage a fleet, feel free to steal the conventions.&lt;/p&gt;
&lt;p&gt;The conventions are anchored in &lt;a href=&quot;https://dbuho.me/project/b19-ubuntu/&quot;&gt;B19/Ubuntu&lt;/a&gt; and flow organically into all downstream projects.&lt;br /&gt;
The conventions are unopinionated (though the defaults can be).&lt;/p&gt;
&lt;p&gt;What&amp;#39;s inside?&lt;/p&gt;
&lt;h2&gt;Basic container decency&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Follows 12-factor app guidelines&lt;/li&gt;
&lt;li&gt;Reasonable, secure, and safe defaults with minimal user input required&lt;/li&gt;
&lt;li&gt;Images should be immutable; all state lives in volumes&lt;/li&gt;
&lt;li&gt;Support for XDG and other industry standards&lt;/li&gt;
&lt;li&gt;Proper telemetry everywhere&lt;/li&gt;
&lt;li&gt;File operations use locks, always keeping concurrency in mind&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Dockerfile orchestrates&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;No shell sagas&lt;/li&gt;
&lt;li&gt;No mile-long &lt;code&gt;RUN&lt;/code&gt; commands—one &lt;code&gt;RUN&lt;/code&gt; per stage&lt;/li&gt;
&lt;li&gt;Minimal layers&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Switches, toggles, handles&lt;/h2&gt;
&lt;p&gt;B19-style images expose switches for all kinds of behavior: there&amp;#39;s no such thing as &amp;quot;too many switches.&amp;quot; Where possible, switches are set via environment variables (relying on various mounts and binds is messy).&lt;br /&gt;
Configuration files are generated via Jinja2 templates driven by environment variables.&lt;/p&gt;
&lt;h2&gt;Everything is &lt;code&gt;.d&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Numbered hooks everywhere. Everything can be extended or overridden via simple drop-in shell scripts in downstream projects. Hooks can be inherited:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build is &lt;code&gt;build.d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Healthcheck is &lt;code&gt;healthcheck.d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Entrypoint is &lt;code&gt;entrypoint.d&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Designed with off-grid in mind&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Do not assume connectivity is guaranteed&lt;/li&gt;
&lt;li&gt;Do not assume fast or stable connectivity&lt;/li&gt;
&lt;li&gt;Timeouts, backoffs, and retries everywhere&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, a b19 distribution comes with all the things you would end up adding to an official image anyway—right out of the box.&lt;/p&gt;</content:encoded><category>Meta</category><category>Containerization</category><category>Docker</category><category>Continuous Integration</category><category>Continuous Deployment</category><author>damian.buho@proton.me (Damián Búho)</author></item></channel></rss>