<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="https://sandfox.me/assets/xml/atom.xsl" type="text/xsl media="all"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom">
  <title>Sand Fox (Posts about gitlab)</title>
  <id>https://sandfox.me/tags/gitlab.xml</id>
  <updated>2026-01-05T10:06:07Z</updated>
  <author>
    <name>Anton Smirnov</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://sandfox.me/tags/gitlab.xml"/>
  <link rel="alternate" type="text/html" href="https://sandfox.me/tags/gitlab.html"/>
  <generator uri="https://getnikola.com/">Nikola</generator>
  <entry>
    <title>Running 32-bit Images in GitLab CI</title>
    <id>https://sandfox.me/misc/gitlab-ci-32bit.html</id>
    <updated>2023-09-07T16:03:00+03:00</updated>
    <published>2023-09-07T16:03:00+03:00</published>
    <author>
      <name>Anton Smirnov</name>
    </author>
    <link rel="alternate" type="text/html" href="https://sandfox.me/misc/gitlab-ci-32bit.html"/>
    <summary type="html">&lt;p&gt;A thing that was not obvious to me and relatively hard to google
was a way to run a 32-bit docker image in the GitLab CI.
Docker itself has &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;--platform&lt;/span&gt;&lt;/code&gt; param but it is not exposed to the &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;.gitlab-ci.yml&lt;/span&gt;&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;Luckily it's easy for the official Docker registry.
Apart from auto-selection images, it also contains per-architecture image repos with distinct package names.
You only need to specify a desired architecture prefix: like &lt;code class="docutils literal"&gt;amd64/php&lt;/code&gt; or &lt;code class="docutils literal"&gt;i386/php&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code yaml"&gt;&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-1" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-1" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-1"&gt;&lt;/a&gt;&lt;span class="nt"&gt;.test&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-2" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-2" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-2"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-3" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-3" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;composer update&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-4" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-4" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;vendor/bin/phpunit&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-5" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-5" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-5"&gt;&lt;/a&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-6" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-6" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-6"&gt;&lt;/a&gt;&lt;span class="nt"&gt;test-64bit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-7" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-7" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;extends&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;.test&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-8" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-8" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;stage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;test&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-9" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-9" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;amd64/php:8&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-10" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-10" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-10"&gt;&lt;/a&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-11" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-11" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-11"&gt;&lt;/a&gt;&lt;span class="nt"&gt;test-32bit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-12" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-12" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-12"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;extends&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;.test&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-13" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-13" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-13"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;stage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;test&lt;/span&gt;
&lt;a id="rest_code_5a3ade91a6bb43639ab4e233037c9469-14" name="rest_code_5a3ade91a6bb43639ab4e233037c9469-14" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_5a3ade91a6bb43639ab4e233037c9469-14"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;i386/php:8&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or using the matrix:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code yaml"&gt;&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-1" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-1" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-1"&gt;&lt;/a&gt;&lt;span class="nt"&gt;test&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-2" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-2" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-2"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;stage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;test&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-3" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-3" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;${ARCH}/php:${PHP_VERSION}&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-4" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-4" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-5" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-5" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;composer update&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-6" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-6" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;vendor/bin/phpunit&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-7" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-7" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;parallel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-8" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-8" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-9" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-9" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;PHP_VERSION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-10" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-10" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-10"&gt;&lt;/a&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'7'&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-11" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-11" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-11"&gt;&lt;/a&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'8'&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-12" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-12" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-12"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;ARCH&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-13" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-13" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-13"&gt;&lt;/a&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;amd64&lt;/span&gt;
&lt;a id="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-14" name="rest_code_a77058d3a39e403d8f636a0d3aeed7e3-14" href="https://sandfox.me/misc/gitlab-ci-32bit.html#rest_code_a77058d3a39e403d8f636a0d3aeed7e3-14"&gt;&lt;/a&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;i386&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</summary>
    <category term="gitlab" label="gitlab"/>
    <category term="gitlab-ci" label="gitlab ci"/>
    <category term="i386" label="i386"/>
  </entry>
  <entry>
    <title>Private Composer Repo with GitLab and Satis</title>
    <id>https://sandfox.me/php/satis-gitlab.html</id>
    <updated>2024-05-01T21:05:00+03:00</updated>
    <published>2018-03-09T16:44:00+02:00</published>
    <author>
      <name>Anton Smirnov</name>
    </author>
    <link rel="alternate" type="text/html" href="https://sandfox.me/php/satis-gitlab.html"/>
    <summary type="html">&lt;div&gt;&lt;p&gt;You can easily create your own composer repository using Satis and GitLab.
I will use global &lt;a class="reference external" href="https://gitlab.com"&gt;https://gitlab.com&lt;/a&gt; but it should be most useful for private corporate GitLab installations.
You will need CI and Pages&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sandfox.me/php/satis-gitlab.html"&gt;Read more…&lt;/a&gt; (1 min remaining to read)&lt;/p&gt;&lt;/div&gt;</summary>
    <category term="composer" label="composer"/>
    <category term="gitlab" label="gitlab"/>
    <category term="satis" label="satis"/>
  </entry>
</feed>
