File indexing completed on 2024-05-19 15:23:12
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>Earthfile</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Earthfile) - Theme (Breeze Light)"/> 0006 </head><body style="background-color:#ffffff;color:#1f1c1b"><pre> 0007 <span style="color:#898887;"># </span><span style="color:#ca60ca;">kate:</span><span style="color:#898887;"> </span><span style="color:#0095ff;">hl</span><span style="color:#bf0303;"> earthfile</span><span style="color:#0095ff;">;</span> 0008 0009 <span style="font-weight:bold;">VERSION</span> <span style="color:#0057ae;font-style:italic;">--shell-out-anywhere</span> 0.6 0010 0011 <span style="color:#898887;"># </span><span style="color:#0057ae;background-color:#e0e9f8;">BEGIN</span><span style="color:#898887;"> Global parameters</span> 0012 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">DEVTOOLSET_VERSION</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">11</span> 0013 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">DEVTOOLSET</span> <span style="color:#ca60ca;">=</span> devtoolset-<span style="color:#0057ae;">${DEVTOOLSET_VERSION}</span> 0014 <span style="color:#898887;"># </span><span style="color:#0057ae;background-color:#e0e9f8;">END</span><span style="color:#898887;"> Global parameters</span> 0015 0016 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">param_1</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">"String w/ variable interpolation </span><span style="color:#0057ae;">${DEVTOOLSET}</span><span style="color:#bf0303;">"</span> 0017 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">param_2</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">'String w/o variable interpolation ${DEVTOOLSET}'</span> 0018 <span style="color:#898887;"># Run shell command</span> 0019 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">param_3</span> <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">$(</span><span style="color:#644a9b;font-weight:bold;">echo</span> <span style="color:#bf0303;">"String w/ variable interpolation </span><span style="color:#0057ae;">${</span><span style="color:#0057ae;">DEVTOOLSET</span><span style="color:#0057ae;">}</span><span style="color:#bf0303;">"</span><span style="color:#0057ae;">)</span> 0020 0021 <span style="color:#ff5500;">sample-target:</span> 0022 <span style="font-weight:bold;">FROM</span> alpine 0023 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">stage</span> 0024 <span style="font-weight:bold;">COPY</span> <span style="color:#0057ae;font-style:italic;">--if-exists</span> files/<span style="color:#0057ae;">${stage}</span>/ /files/ 0025 <span style="font-weight:bold;">SAVE</span> <span style="font-weight:bold;">ARTIFACT</span> <span style="color:#0057ae;font-style:italic;">--keep-ts</span> /files /share 0026 0027 <span style="color:#ff5500;">repos-conf-apt:</span> 0028 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">image</span> 0029 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">ppa</span> 0030 0031 <span style="font-weight:bold;">FROM</span> <span style="color:#0057ae;">${image}</span> 0032 0033 <span style="font-weight:bold;">ENV</span> <span style="color:#0057ae;">DEBIAN_FRONTEND</span><span style="color:#ca60ca;">=</span>noninteractive 0034 <span style="font-weight:bold;">ENV</span> <span style="color:#0057ae;">DEBCONF_NONINTERACTIVE_SEEN</span><span style="color:#ca60ca;">=</span>true 0035 0036 <span style="font-weight:bold;">IF</span> <span style="color:#ca60ca;">[</span> <span style="color:#bf0303;">"</span><span style="color:#0057ae;">${ppa}</span><span style="color:#bf0303;">"</span> <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">''</span> <span style="color:#ca60ca;">]</span> 0037 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">_more_cmds</span> <span style="color:#ca60ca;">=</span> add-apt-repository -y -n ppa:<span style="color:#0057ae;">${ppa}</span>/ppa 0038 <span style="font-weight:bold;">ELSE</span> 0039 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">_more_cmds</span> <span style="color:#ca60ca;">=</span> : 0040 <span style="font-weight:bold;">END</span> 0041 0042 <span style="font-weight:bold;">RUN</span> <span style="color:#0057ae;font-style:italic;">--mount type</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;font-style:italic;">secret</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;font-style:italic;">id</span><span style="color:#ca60ca;">=</span><span style="color:#ff5500;">+secrets</span><span style="color:#0095ff;font-weight:bold;">/repo_gpg_key</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;font-style:italic;">target</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;font-style:italic;">/run/secrets/private-archive-keyring.gpg</span> \ 0043 <span style="color:#0057ae;font-style:italic;">--mount type</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;font-style:italic;">cache</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;font-style:italic;">target</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;font-style:italic;">/var/cache/apt/archives</span> \ 0044 <span style="color:#0057ae;font-style:italic;">--mount type</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;font-style:italic;">cache</span><span style="color:#ca60ca;">,</span><span style="color:#0057ae;font-style:italic;">target</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;font-style:italic;">/var/lib/apt/lists</span> \ 0045 <span style="color:#644a9b;font-weight:bold;">set</span> <span style="color:#0057ae;">-x</span><span style="font-weight:bold;">;</span> <span style="color:#0057ae;">\</span> 0046 <span style="color:#0095ff;font-weight:bold;">debconf-set-selections</span> /tmp/debconf-preset.txt <span style="color:#0057ae;">\</span> 0047 <span style="font-weight:bold;">&&</span> <span style="color:#644a9b;">rm</span> <span style="color:#0057ae;">-rf</span> /etc/apt/apt.conf.d/docker-clean <span style="color:#0057ae;">\</span> 0048 <span style="font-weight:bold;">&&</span> <span style="color:#0095ff;font-weight:bold;">apt-get</span> update <span style="color:#0057ae;">\</span> 0049 <span style="font-weight:bold;">&&</span> <span style="color:#0095ff;font-weight:bold;">apt-get</span> install <span style="color:#0057ae;">-y</span> software-properties-common <span style="color:#0057ae;">\</span> 0050 <span style="font-weight:bold;">&&</span> <span style="color:#0095ff;font-weight:bold;">add-apt-repository</span> <span style="color:#0057ae;">--remove</span> multiverse <span style="color:#0057ae;">\</span> 0051 <span style="font-weight:bold;">&&</span> <span style="color:#0095ff;font-weight:bold;">gpg</span> <span style="color:#0057ae;">-v</span> <span style="color:#0057ae;">--dearmor</span> <span style="color:#0057ae;">-</span> <span style="color:#ca60ca;"><</span>/run/secrets/private-archive-keyring.gpg <span style="color:#ca60ca;">></span> /usr/share/keyrings/private-archive-keyring.gpg <span style="color:#0057ae;">\</span> 0052 <span style="font-weight:bold;">&&</span> <span style="color:#0057ae;">${</span><span style="color:#0057ae;">_more_cmds</span><span style="color:#0057ae;">}</span> 0053 0054 <span style="font-weight:bold;">SAVE</span> <span style="font-weight:bold;">ARTIFACT</span> /etc/apt/sources.list /sources.list 0055 <span style="font-weight:bold;">SAVE</span> <span style="font-weight:bold;">ARTIFACT</span> /usr/share/keyrings/private-archive-keyring.gpg /private-archive-keyring.gpg 0056 0057 <span style="font-weight:bold;">IF</span> <span style="color:#ca60ca;">[</span> <span style="color:#bf0303;">"</span><span style="color:#0057ae;">${ppa}</span><span style="color:#bf0303;">"</span> <span style="color:#ca60ca;">!=</span> <span style="color:#bf0303;">''</span> <span style="color:#ca60ca;">]</span> 0058 <span style="font-weight:bold;">SAVE</span> <span style="font-weight:bold;">ARTIFACT</span> /etc/apt/sources.list.d/<span style="color:#0057ae;">${ppa}</span>*.list /sources.list.d 0059 <span style="font-weight:bold;">SAVE</span> <span style="font-weight:bold;">ARTIFACT</span> /etc/apt/trusted.gpg.d/<span style="color:#0057ae;">${ppa}</span>*.gpg /trusted.gpg.d 0060 <span style="font-weight:bold;">END</span> 0061 0062 0063 <span style="color:#644a9b;">APT_INSTALL:</span> 0064 <span style="font-weight:bold;">COMMAND</span> 0065 0066 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">image</span> 0067 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">packages</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">''</span> 0068 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">packages_on_hold</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">''</span> 0069 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">upgrade</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0070 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">clean</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">0</span> 0071 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">pm_aux_options</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">''</span> 0072 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">more_rm_files</span> <span style="color:#ca60ca;">=</span> <span style="color:#bf0303;">''</span> 0073 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">more_cmds</span> <span style="color:#ca60ca;">=</span> : 0074 0075 <span style="font-weight:bold;">IF</span> <span style="color:#ca60ca;">[</span> <span style="color:#ca60ca;">!</span> <span style="color:#ca60ca;">-f</span> /root/debconf-preset.txt <span style="color:#ca60ca;">]</span> 0076 <span style="font-weight:bold;">COPY</span> (<span style="color:#ff5500;">+repos-conf-apt</span><span style="color:#0095ff;font-weight:bold;">/debconf-preset.txt</span> <span style="color:#0057ae;font-style:italic;">--image</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${image}</span>) /root/debconf-preset.txt 0077 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">_debconf_cmd_cond</span> <span style="color:#ca60ca;">=</span> debconf-set-selections /root/debconf-preset.txt 0078 <span style="font-weight:bold;">ELSE</span> 0079 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">_debconf_cmd_cond</span> <span style="color:#ca60ca;">=</span> : 0080 <span style="font-weight:bold;">END</span> 0081 0082 <span style="font-weight:bold;">IF</span> <span style="color:#ca60ca;">[</span> <span style="color:#ca60ca;">!</span> <span style="color:#ca60ca;">-f</span> /usr/share/keyrings/private-archive-keyring.gpg <span style="color:#ca60ca;">]</span> 0083 <span style="font-weight:bold;">COPY</span> (<span style="color:#ff5500;">+repos-conf-apt</span><span style="color:#0095ff;font-weight:bold;">/private-archive-keyring.gpg</span> <span style="color:#0057ae;font-style:italic;">--image</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${image}</span>) \ 0084 /usr/share/keyrings/private-archive-keyring.gpg 0085 <span style="color:#898887;"># </span><span style="color:#81ca2d;background-color:#f7e6e6;font-weight:bold;">NOTE</span><span style="color:#898887;"> Also copy the `sources.list` file with `multiverse` disabled!</span> 0086 <span style="font-weight:bold;">COPY</span> (<span style="color:#ff5500;">+repos-conf-apt</span><span style="color:#0095ff;font-weight:bold;">/sources.list</span> <span style="color:#0057ae;font-style:italic;">--image</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${image}</span>) /etc/apt 0087 <span style="font-weight:bold;">END</span> 0088 0089 <span style="color:#898887;"># ...</span> 0090 0091 <span style="color:#644a9b;">MAKE_PYTHON_CI_IMAGE:</span> 0092 <span style="font-weight:bold;">COMMAND</span> 0093 0094 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">image</span> 0095 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">python</span> <span style="color:#ca60ca;">=</span> python3 0096 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">python_pkg</span> <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">${python}</span> 0097 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">python_bin</span> <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">${python}</span> 0098 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">python_ver</span> <span style="color:#ca60ca;">=</span> <span style="color:#b08000;">3</span>.<span style="color:#b08000;">11</span> 0099 0100 <span style="font-weight:bold;">DO</span> <span style="color:#644a9b;">+APT_INSTALL</span> <span style="color:#0057ae;font-style:italic;">--packages</span><span style="color:#ca60ca;">=</span><span style="color:#bf0303;">"</span><span style="color:#0057ae;">${python_pkg}</span><span style="color:#bf0303;"> git"</span> 0101 0102 <span style="font-weight:bold;">ARG</span> <span style="color:#0057ae;">_chroot_base</span> <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">$(</span><span style="color:#644a9b;">dirname</span> <span style="color:#0057ae;">$(</span><span style="color:#644a9b;">cat</span> /etc/debian_chroot<span style="color:#0057ae;">)</span><span style="color:#0057ae;">)</span> 0103 0104 <span style="font-weight:bold;">DO</span> <span style="color:#0095ff;font-weight:bold;">./share</span><span style="color:#644a9b;">+IMAGE_INIT</span> \ 0105 <span style="color:#0057ae;font-style:italic;">--image_description</span><span style="color:#ca60ca;">=</span><span style="color:#bf0303;">"CI image for Python projects"</span> \ 0106 <span style="color:#0057ae;font-style:italic;">--debian_chroot</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${</span><span style="color:#0057ae;">_chroot_base</span><span style="color:#0057ae;">}</span>/python/<span style="color:#0057ae;">${python_ver}</span>/ci \ 0107 <span style="color:#0057ae;font-style:italic;">--storage_name</span><span style="color:#ca60ca;">=</span>none 0108 0109 <span style="font-weight:bold;">COPY</span> <span style="color:#0057ae;font-style:italic;">--dir</span> (<span style="color:#ff5500;">+prep-python-ci</span><span style="color:#0095ff;font-weight:bold;">/local</span> <span style="color:#0057ae;font-style:italic;">--image</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${image}</span>) /usr 0110 0111 <span style="font-weight:bold;">ENV</span> <span style="color:#0057ae;">SETUPTOOLS_USE_DISTUTILS</span><span style="color:#ca60ca;">=</span><span style="color:#bf0303;">'stdlib'</span> 0112 <span style="font-weight:bold;">ENV</span> <span style="color:#0057ae;">PIP_DISABLE_PIP_VERSION_CHECK</span><span style="color:#ca60ca;">=</span>1 0113 0114 0115 <span style="color:#ff5500;">all:</span> 0116 <span style="font-weight:bold;">LOCALLY</span> 0117 0118 <span style="color:#898887;"># Primary images</span> 0119 <span style="font-weight:bold;">BUILD</span> <span style="color:#ff5500;">+ci</span> 0120 <span style="font-weight:bold;">BUILD</span> <span style="color:#ff5500;">+clang-ci</span> 0121 <span style="font-weight:bold;">BUILD</span> <span style="color:#ff5500;">+python-ci</span> 0122 0123 <span style="font-weight:bold;">IF</span> <span style="color:#ca60ca;">[</span> <span style="color:#bf0303;">"</span><span style="color:#0057ae;">${BUILD_TESTING}</span><span style="color:#bf0303;">"</span> <span style="color:#ca60ca;">-gt</span> <span style="color:#b08000;">0</span> <span style="color:#ca60ca;">]</span> 0124 <span style="color:#898887;"># Also include all tests</span> 0125 <span style="font-weight:bold;">BUILD</span> <span style="color:#ff5500;">+tests</span> 0126 <span style="font-weight:bold;">END</span> 0127 0128 <span style="color:#ff5500;">tests:</span> 0129 <span style="font-weight:bold;">LOCALLY</span> 0130 0131 <span style="font-weight:bold;">BUILD</span> <span style="color:#ff5500;">+ci-tests</span> 0132 <span style="font-weight:bold;">BUILD</span> <span style="color:#ff5500;">+clang-ci-tests</span> 0133 <span style="font-weight:bold;">BUILD</span> <span style="color:#ff5500;">+python-ci-tests</span> 0134 0135 <span style="color:#ff5500;">ci-tests:</span> 0136 <span style="font-weight:bold;">FROM</span> <span style="color:#ff5500;">+ci</span> 0137 <span style="font-weight:bold;">COPY</span> .env / 0138 <span style="font-weight:bold;">DO</span> <span style="color:#0095ff;font-weight:bold;">share</span><span style="color:#644a9b;">+RUN_TESTS</span> <span style="color:#0057ae;font-style:italic;">--VERBOSE</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${VERBOSE}</span> 0139 0140 <span style="color:#ff5500;">clang-ci-tests:</span> 0141 <span style="font-weight:bold;">FROM</span> <span style="color:#ff5500;">+clang-ci</span> 0142 <span style="font-weight:bold;">COPY</span> .env / 0143 <span style="font-weight:bold;">ENV</span> <span style="color:#0057ae;">EXPECT_CLANG_VERSION</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${</span><span style="color:#0057ae;">CLANG_VERSION</span><span style="color:#0057ae;">}</span> 0144 <span style="font-weight:bold;">DO</span> <span style="color:#0095ff;font-weight:bold;">share</span><span style="color:#644a9b;">+RUN_TESTS</span> <span style="color:#0057ae;font-style:italic;">--VERBOSE</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${VERBOSE}</span> <span style="color:#0057ae;font-style:italic;">--script</span><span style="color:#ca60ca;">=</span>ci-tests.sh 0145 0146 <span style="color:#ff5500;">python-ci-tests:</span> 0147 <span style="font-weight:bold;">FROM</span> <span style="color:#ff5500;">+python-ci</span> 0148 <span style="font-weight:bold;">COPY</span> .env / 0149 <span style="font-weight:bold;">DO</span> <span style="color:#0095ff;font-weight:bold;">share</span><span style="color:#644a9b;">+RUN_TESTS</span> <span style="color:#0057ae;font-style:italic;">--VERBOSE</span><span style="color:#ca60ca;">=</span><span style="color:#0057ae;">${VERBOSE}</span> 0150 </pre></body></html>