<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Workload Identity Federation on Chris Liatas</title><link>https://liatas.com/tags/workload-identity-federation/</link><description>Recent content in Workload Identity Federation on Chris Liatas</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 03 Jun 2026 06:00:00 +0300</lastBuildDate><atom:link href="https://liatas.com/tags/workload-identity-federation/index.xml" rel="self" type="application/rss+xml"/><item><title>Keyless Hugo staging: GitLab OIDC + Firebase preview channels</title><link>https://liatas.com/posts/hugo-firebase-preview-channels-gitlab-oidc/</link><pubDate>Wed, 03 Jun 2026 06:00:00 +0300</pubDate><guid>https://liatas.com/posts/hugo-firebase-preview-channels-gitlab-oidc/</guid><description>&lt;div class="headerclaim"&gt;This builds directly on &lt;strong&gt;&lt;a href="https://liatas.com/posts/hugo-ci-cd"&gt;Continuous Deployment for Hugo websites&lt;/a&gt;&lt;/strong&gt; — the keyless GitLab OIDC + Workload Identity Federation setup. Read that first; here we add a staging preview on a separate branch.&lt;/div&gt;

&lt;p&gt;The &lt;a href="https://liatas.com/posts/hugo-ci-cd"&gt;keyless deploy post&lt;/a&gt; gets &lt;code&gt;main&lt;/code&gt; → live Firebase Hosting with no stored secrets. The missing half is &lt;strong&gt;staging&lt;/strong&gt;: previewing every change at a shareable URL &lt;em&gt;before&lt;/em&gt; it goes live. Firebase Hosting &lt;a href="https://firebase.google.com/docs/hosting/test-preview-deploy"&gt;preview channels&lt;/a&gt; do exactly that — ephemeral, auto-expiring copies of your site, isolated from the live channel — and we can drive them from a &lt;code&gt;dev&lt;/code&gt; branch using the &lt;strong&gt;same&lt;/strong&gt; Workload Identity Federation (WIF), at no extra cost and with no new infrastructure.&lt;/p&gt;</description></item><item><title>Continuous Deployment for Hugo websites</title><link>https://liatas.com/posts/hugo-ci-cd/</link><pubDate>Tue, 02 Oct 2018 17:53:53 +0300</pubDate><guid>https://liatas.com/posts/hugo-ci-cd/</guid><description>&lt;div class="headerclaim"&gt;The following assume familiarity with Continuous Deployment practices, &lt;a href="https://git-scm.com/"&gt;git&lt;/a&gt;, Hugo installed and an existing Hugo project, plus a Google Cloud / Firebase project and the &lt;a href="https://cloud.google.com/sdk/"&gt;&lt;code&gt;gcloud&lt;/code&gt;&lt;/a&gt; CLI.&lt;/div&gt;

&lt;aside class="callout"&gt;
 &lt;h5 class="callout__title"&gt;&lt;svg class="callout__icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"&gt;&lt;polyline points="23 4 23 10 17 10"/&gt;&lt;polyline points="1 20 1 14 7 14"/&gt;&lt;path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/&gt;&lt;/svg&gt;&lt;span&gt;Rewritten for 2026&lt;/span&gt;
 &lt;/h5&gt;
 &lt;div class="callout__body"&gt;&lt;p&gt;The original post deployed with a long-lived &lt;code&gt;FIREBASE_TOKEN&lt;/code&gt; (from &lt;code&gt;firebase login:ci&lt;/code&gt;) and walked through building your own Hugo container image. Both are now outdated: &lt;code&gt;firebase login:ci&lt;/code&gt; tokens are &lt;a href="https://github.com/firebase/firebase-tools/discussions/6283"&gt;deprecated&lt;/a&gt;, and a public Hugo-extended image removes the need to maintain your own. This version uses &lt;strong&gt;keyless&lt;/strong&gt; authentication via &lt;strong&gt;GitLab OIDC + GCP Workload Identity Federation (WIF)&lt;/strong&gt; — no secrets stored in GitLab at all.&lt;/p&gt;</description></item></channel></rss>