<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>GitLab on Clarence | Backend, AI, DevOps, Infrastructure</title>
    <link>https://clarence.tw/en/tags/gitlab/</link>
    <description>Recent content in GitLab on Clarence | Backend, AI, DevOps, Infrastructure</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Tue, 30 Jan 2024 15:00:00 +0800</lastBuildDate><atom:link href="https://clarence.tw/en/tags/gitlab/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GitLab CI/CD Configuration Guide</title>
      <link>https://clarence.tw/en/posts/gitlab-cicd-complete-guide/</link>
      <pubDate>Tue, 30 Jan 2024 15:00:00 +0800</pubDate>
      
      <guid>https://clarence.tw/en/posts/gitlab-cicd-complete-guide/</guid>
      <description>&lt;p&gt;In enterprise DevOps work, I build and maintain GitLab CI/CD workflows from code submission to production deployment. This article summarizes the practical configuration patterns I use most often.&lt;/p&gt;
&lt;h2 id=&#34;gitlab-cicd-foundation&#34;&gt;GitLab CI/CD Foundation&lt;/h2&gt;
&lt;h3 id=&#34;gitlab-runner-deployment&#34;&gt;GitLab Runner Deployment&lt;/h3&gt;
&lt;p&gt;Self-hosted runners are useful when a team needs controlled network access, private registry connectivity, or predictable runtime behavior.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Install GitLab Runner&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -L &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh&amp;#34;&lt;/span&gt; | sudo bash
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt-get install gitlab-runner
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Register runner&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo gitlab-runner register &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --url &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://gitlab.company.com/&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --registration-token &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;YOUR_TOKEN&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --executor &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;docker&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --docker-image &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alpine:latest&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --description &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Production Runner&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --tag-list &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;production,docker&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For Docker-based builds, the runner configuration needs to match the team&amp;rsquo;s security and build requirements. Docker-in-Docker is convenient, but it should be used intentionally because privileged mode increases risk.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
