<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Gitlab – Yeri Tiete</title>
    <link>https://yeri.be/tag/gitlab/</link>
    <description>Yeri Tiete&#39;s blog</description>
    <language>en</language>
    <copyright>© Yeri Tiete</copyright>
    <lastBuildDate>Sun, 17 May 2026 06:32:54 +0200</lastBuildDate>
    <atom:link href="https://yeri.be/tag/gitlab/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Scheduling posts on a static blog</title>
      <link>https://yeri.be/scheduling-posts-on-a-static-blog/</link>
      <pubDate>Sun, 17 May 2026 06:32:54 +0200</pubDate>
      <author>Yeri Tiete</author>
      <guid isPermaLink="true">https://yeri.be/scheduling-posts-on-a-static-blog/</guid>
      <description>&lt;p&gt;One of the things I missed &lt;a href=&#34;https://yeri.be/from-wordpress-to-hugo/&#34;&gt;moving from WordPress to Hugo&lt;/a&gt;: scheduled posts.&#xA;WP just&amp;hellip; does that. Set a future date, and forget about it.&lt;/p&gt;&#xA;&lt;p&gt;And static site generators don&amp;rsquo;t&amp;hellip; The site only rebuilds when you &lt;code&gt;git push&lt;/code&gt;, and that&amp;rsquo;s it. 😢&lt;/p&gt;&#xA;&lt;p&gt;Why schedule posts, you ask? Because at times I write 3-4 posts in a day, and I don&amp;rsquo;t want to spam. ¯\&lt;em&gt;(ツ)&lt;/em&gt;/¯ I have a rule that there should only be a single published post a day, and if I know I&amp;rsquo;m out of topics (especially for FlatTurtle) I tend to add a week or 2 between posts to spread it out evenly.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>One of the things I missed <a href="/from-wordpress-to-hugo/">moving from WordPress to Hugo</a>: scheduled posts.
WP just&hellip; does that. Set a future date, and forget about it.</p>
<p>And static site generators don&rsquo;t&hellip; The site only rebuilds when you <code>git push</code>, and that&rsquo;s it. 😢</p>
<p>Why schedule posts, you ask? Because at times I write 3-4 posts in a day, and I don&rsquo;t want to spam. ¯\<em>(ツ)</em>/¯ I have a rule that there should only be a single published post a day, and if I know I&rsquo;m out of topics (especially for FlatTurtle) I tend to add a week or 2 between posts to spread it out evenly.</p>
<p>So I wrote (aka vibe coded) a little thing about a year or two ago, originally called <em>BlogTurtle Rebuilder</em>, because it was meant for <a href="https://flatturtle.xyz" target="_blank" rel="noopener noreferrer">FlatTurtle</a>&rsquo;s hugo <a href="https://flatturtle.link/blog" target="_blank" rel="noopener noreferrer">blog</a>. I&rsquo;ve since repurposed it for this site.</p>
<p>The flow is quite simple:</p>
<ol>
<li>I push a Markdown post to GitLab with <code>date = &quot;...&quot;</code> set to whenever I want it published.</li>
<li>Gitlab runs CI and deploys to Cloudflare Pages. Hugo will, however, hide posts with a <code>date</code> in the future.</li>
<li>On push, GitLab also pings a webhook (a docker container on a server).</li>
<li>Said container does a <code>git pull</code> and scans every <code>.md</code> for that date field.</li>
<li>Anything in the future gets an in-memory timer for that exact moment. Anything already due gets ignored at Gitlab CI would&rsquo;ve deployed it.</li>
<li>When the timer pops, it triggers the GitLab CI/CD pipeline (through another webhook) that does a new Hugo build + deploy.</li>
<li>As an added bonus, I get an email telling me the post is live, with a <a href="https://culturedcode.com/things/" target="_blank" rel="noopener noreferrer">Things3</a> deep-link to add a follow-up task to share it somewhere. It&rsquo;s one click away.</li>
</ol>
<p>That&rsquo;s the whole thing.</p>
]]></content:encoded>
      <category>software</category><category>www</category>
      <category>blog</category><category>docker</category><category>python</category><category>hugo</category><category>gitlab</category><category>flatturtle</category>
    </item>
    
  </channel>
</rss>
