<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.baszerr.eu/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>BaSzErr - blog:2021:01:13</title>
        <description></description>
        <link>https://www.baszerr.eu/</link>
        <lastBuildDate>Wed, 06 May 2026 07:55:10 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://www.baszerr.eu/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
            <title>BaSzErr</title>
            <link>https://www.baszerr.eu/</link>
        </image>
        <item>
            <title>2021-01-13_-_project_infrastructure</title>
            <link>https://www.baszerr.eu/doku.php?id=blog:2021:01:13:2021-01-13_-_project_infrastructure</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;project_infrastructure&quot;&gt;2021-01-13 - project infrastructure&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
there are 2 major elements for setting up infrastructure for a project:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CI/CD pipeline&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SDK for development&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
it is still often to see 1st being non-existing or skeleton and 2nd in what i call “IaB” (&lt;em&gt;infrastructure as binary&lt;/em&gt; ;)) – i.e. binary blogs just committed alongside with the code. typically this involves: 3rd party libraries, compilers, binary test data (like test images and test sets). when you see a project that&amp;#039;s git repo takes 15GB, you know you are in that situation.
&lt;/p&gt;

&lt;p&gt;
instead what i opt for &lt;a href=&quot;https://en.wikipedia.org/wiki/Infrastructure as code&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Infrastructure as code&quot;&gt;IaC&lt;/a&gt; approach. then you can keep scripts, that can setup everything for you, with just a couple lines of code, keeping all the big, binary things away from repository.
&lt;/p&gt;

&lt;p&gt;
for CI/CD this usually means CI/CD configuration (i.e. what steps CI/CD should execute to complete its work – think for eg.: Jenkinsfile or a Bamboospec) and CI agents setup (eg. with &lt;a href=&quot;https://en.wikipedia.org/wiki/Ansible (software)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Ansible (software)&quot;&gt;Ansible&lt;/a&gt;). this is not uncommon to be done like this nowadays, but still not all the projects use this approach.
&lt;/p&gt;

&lt;p&gt;
setting up SDK in a IaC fashion however is far less common. most projects just do it manually (both on CI agents and developers PC). aside from brain-dead work it requires to setup it also causes issues (eg.: “it does not work on CI but worked on my PC!” syndrome, or versions mismatch between different devs&amp;#039; PCs). instead SDK should also be defined via IaC means. examples are &lt;a href=&quot;https://en.wikipedia.org/wiki/docker (software)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/docker (software)&quot;&gt;Dockerfiles&lt;/a&gt; for docker images or &lt;a href=&quot;https://en.wikipedia.org/wiki/Vagrant (software)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Vagrant (software)&quot;&gt;Vagrantfiles&lt;/a&gt; for VMs. with such an approach you can be sure, that all devs use the same reference setup and that it is shared with CI as well.
&lt;/p&gt;

&lt;p&gt;
but that&amp;#039;s not all! there is also one more great, yet hidden benefit. with SDK defined in IaC, neither developers nor CI/CD need to be tied to a singe version of a compiler or library. instead, one can switch between different environments as easy as simply starting new docker container or a VM! this is great for maintenance, as now ppl can be fully productive on trunk/master branch and rapidly switch back to LTS version of the software, if a new bug is reported.
&lt;/p&gt;

&lt;p&gt;
last but not least, this also keeps whole project&amp;#039;s infrastructure aligned with an exact SW version / commit hash, as these files are just another code on the repository.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:43 +0000</pubDate>
        </item>
    </channel>
</rss>
