<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CI/CD on Tom Meurs</title>
    <link>https://tommeurs.nl/nl/categories/ci-cd/</link>
    <description>Recent content in CI/CD on Tom Meurs</description>
    <generator>Hugo</generator>
    <language>nl</language>
    <copyright>© Tom Meurs</copyright>
    <lastBuildDate>Tue, 29 Sep 2026 09:00:00 +0200</lastBuildDate>
    <atom:link href="https://tommeurs.nl/nl/categories/ci-cd/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Supply chain security in GitLab CI: SBOM, cosign en het beleid dat blokkeert</title>
      <link>https://tommeurs.nl/nl/posts/supply-chain-security-gitlab-ci/</link>
      <pubDate>Tue, 29 Sep 2026 09:00:00 +0200</pubDate>
      <guid>https://tommeurs.nl/nl/posts/supply-chain-security-gitlab-ci/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; Een pipeline die images scant en een SBOM schrijft, zonder dat iets daar bij toelating naar kijkt, stond een jaar op groen en hield niks tegen. Vier stappen hieronder: een SBOM die Trivy kan teruglezen, een cosign-handtekening op de digest met de sleutel in Vault, de SBOM eraan gehangen als attestation, en een Kyverno-policy die de rest weigert. Daarna een tabel van welke SLSA Build L3-eisen een zelfgehoste GitLab-runner haalt, en de twee die hij niet haalt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Progressive delivery met Argo Rollouts: canary en blue-green deployments</title>
      <link>https://tommeurs.nl/nl/posts/argo-rollouts-progressive-delivery/</link>
      <pubDate>Fri, 20 Jun 2025 10:00:00 +0200</pubDate>
      <guid>https://tommeurs.nl/nl/posts/argo-rollouts-progressive-delivery/</guid>
      <description>&lt;p&gt;Een standaard Kubernetes Deployment heeft me lang prima gediend. Push een nieuwe image tag, kijk hoe de pods rollen, klaar. Simpel, declaratief, en meestal ging er niks mis. De rolling update gaf me zelfs een warm gevoel van veiligheid: oude pods verdwijnen pas als de nieuwe ready zijn.&lt;/p&gt;&#xA;&lt;p&gt;Dat gevoel is een leugen. Een rolling update beschermt je tegen pods die niet opstarten. Hij doet niks tegen pods die perfect opstarten en vervolgens kapotte responses serveren. De container is gezond, de readiness probe is groen, en je nieuwe code stuurt stilletjes 500&amp;rsquo;s naar elke gebruiker. Binnen seconden raakt 100% van je traffic code die niemand onder echte load heeft gevalideerd.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Semantic versioning automatiseren met GitLab CI</title>
      <link>https://tommeurs.nl/nl/posts/semantic-versioning-gitlab/</link>
      <pubDate>Tue, 27 May 2025 19:44:00 +0200</pubDate>
      <guid>https://tommeurs.nl/nl/posts/semantic-versioning-gitlab/</guid>
      <description>&lt;p&gt;Stel je eerst de eindsituatie voor. Je merget een branch naar main, loopt weg om koffie te halen, en tegen de tijd dat je terug bent heeft het project een nieuwe versie-tag, een verse changelog-entry, en een GitLab release met notes die uit je commits zijn geschreven. Niemand besloot &amp;ldquo;is dit 1.4.0 of 1.3.5?&amp;rdquo; omdat niemand dat hoefde. Het versienummer rolde uit het werk zelf.&lt;/p&gt;&#xA;&lt;p&gt;Daar wil ik in deze post naartoe. Ik draai een self-hosted GitLab en ik wil niet dat versioning iets is waar ik over nadenk. Een versienummer dat iemand met de hand kiest is een klein black box: het hangt ervan af of die persoon de regels onthield, oplette, en het met iedereen eens was over wat als een breaking change telt. Ik heb liever dat het nummer een consequentie van de commits is, iets dat ik kan inspecteren en reproduceren.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitLab CI voor Kubernetes: van commit tot deployment</title>
      <link>https://tommeurs.nl/nl/posts/gitlab-ci-kubernetes/</link>
      <pubDate>Thu, 15 May 2025 20:33:00 +0200</pubDate>
      <guid>https://tommeurs.nl/nl/posts/gitlab-ci-kubernetes/</guid>
      <description>&lt;p&gt;Lange tijd draaide mijn CI op de servers van iemand anders. Push code, wacht op een hosted runner, kijk hoe de minuten aftikken tegen een maandelijks quotum, hoop dat de provider de regels niet verandert volgend kwartaal. Het werkte, tot ik me begon af te vragen waar mijn broncode eigenlijk stond terwijl hij gebouwd werd, en wie er nog meer bij kon.&lt;/p&gt;&#xA;&lt;p&gt;Dus haalde ik GitLab in huis. Ik draai hem nu self-hosted, op eigen hardware, naast de clusters waarnaar hij deployt. Dat is &lt;a href=&#34;https://tommeurs.nl/nl/posts/sovereign-infrastructure/&#34;&gt;soevereiniteit&lt;/a&gt; toegepast op CI/CD: mijn code, mijn builds, mijn artifacts, geen vendor die prijzen kan veranderen, een feature kan deprecaten waar ik van afhankelijk ben, of mijn repositories kan lezen zonder dat ik het weet.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
