From 2937c26ec7e00989497e8221ae6832084891e8cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Star=C3=BD=20Novotn=C3=BD?= <witiko@mail.muni.cz>
Date: Tue, 15 Oct 2024 15:55:33 +0200
Subject: [PATCH] Add exercise about continuous integration

---
 .../practices/automatizace-sazby/content.html | 119 ++++++++++++++++--
 1 file changed, 112 insertions(+), 7 deletions(-)

diff --git a/public/practices/automatizace-sazby/content.html b/public/practices/automatizace-sazby/content.html
index 96f6dd8..944496e 100644
--- a/public/practices/automatizace-sazby/content.html
+++ b/public/practices/automatizace-sazby/content.html
@@ -417,17 +417,122 @@
         </span>
     </h2>
     <p>
-        Tato sekce bude obsahovat studijní materiály, které zatím nejsou
-        přichystané.
+        Další způsob automatizace se nazývá <em>průběžná integrace</em>
+        (anglicky <em>continuous integration</em> nebo krátce <abbr>CI</a>)
+        a pojí se s programy pro správu verzí jako Git, který jsme si
+        představili v <a href="../sprava-verzi">dřívějším cvičení</a>.
     </p>
+    <p>
+        Při práci s programem Git často používáme webové služby jako
+        <a href="https://gitlab.fi.muni.cz/">GitLab FI</a> a
+        <a href="https://github.com/">GitHub</a> pro sdílení repozitářů a
+        spolupráci s dalšími lidmi. Průběžná integrace nám umožňuje tyto
+        služby nastavit tak, aby se při každé změně repozitáře automaticky
+        spustil výpočetní uzel, který repozitář stáhne, vykoná nad ním zadané
+        příkazy a zpřístupní vytvořené soubory.
+    </p>
+    <div class="tip-box">
+        <p>
+            Průběžnou integraci využívá mj. i tento web. Při každé změně
+            hlavní větve <tt>main</tt> v <a href="https://gitlab.fi.muni.cz/sojka/PB029_web">repozitáři s kódem webu</a>
+            se pustí výpočetní uzel, který z kódu vytvoří statickou webovou
+            stránku a zveřejní ji na adrese <tt>https://sojka.pages.fi.muni.cz/PB029_web/</tt>.
+        </p>
+        <p>
+            Pro vĂ­ce informacĂ­ vizte konfiguraÄŤnĂ­ soubor
+            <a href="https://gitlab.fi.muni.cz/sojka/PB029_web/-/blob/main/.gitlab-ci.yml"><tt>.gitlab-ci.yml</tt></a>,
+            který průběžnou integraci webu řídí.
+        </p>
+    </div>
+    <p>
+        Ukážeme si, jak můžeme pomocí průběžné integrace automatizovat přípravu
+        TeXových dokumentů na <a href="https://gitlab.fi.muni.cz/">GitLabu FI</a>:
+    </p>
+    <ol>
+        <li>
+            Stáhněte si repozitář s pohádkou o Bílé paní Vrbenské, který jsme
+            si vytvořili na <a href="../sprava-verzi#tex">cvičení o správě verzí</a>:
+            <code class="ukazka_kodu">
+                $ <b>git clone https://gitlab.fi.muni.cz/<i>xnovot32</i>/PB029_sprava_verzi.git <i>xnovot32</i>_PB029_sprava_verzi</b><br/>
+                Cloning into "<i>xnovot32</i>_PB029_sprava_verzi"...<br/>
+                remote: Counting objects: 6, done.<br/>
+                remote: Compressing objects: 100% (4/4), done.<br/>
+                remote: Total 6 (delta 1), reused 0 (delta 0)<br/>
+                Receiving objects: 100% (6/6), done.<br/>
+                Resolving deltas: 100% (1/1), done.<br/>
+                Checking connectivity... done.<br/>
+            </code>
+            Pokud repozitář vytvořený nemáte, následujte kroky 1&endash;5 ze
+            <a href="../sprava-verzi#ex">cvičení o správě verzí</a> a poté
+            pokraÄŤujte zde.
+        </li>
+        <li>
+          Stáhněte si <a href="">soubor s konfigurací průběžné integrace</a>
+          a uložte jej do kořenového adresáře vaší pracovní kopie:
+            <code class="ukazka_kodu">
+                $ <b>cd <i>xnovot32</i>_PB029_sprava_verzi</b><br/>
+                $ <b>wget <a href="files/.gitlab-ci.yml">https://sojka.pages.fi.muni.cz/PB029_web/practices/automatizace-sazby/files/.gitlab-ci.yml</a></b><br/>
+                --2024-10-15 15:33:14--  https://sojka.pages.fi.muni.cz/PB029_web/practices/automatizace-sazby/files/.gitlab-ci.yml<br/>
+                Ukládám do: „.gitlab-ci.yml“<br/>
+                <br/>
+                dokument.tex        100%[===================&gt;]   1,09K  --.-KB/s    in 0s      <br/>
+                <br/>
+                2024-10-15 15:33:14 (18,3 MB/s) – „.gitlab-ci.yml“ uloženo [527/527]<br/>
+            </code>
+            Soubor si otevřete v textovém editoru a prohlédněte:
+            <code class="ukazka_kodu">
+                $ <b>cat .gitlab-ci.yml<br/>
+                vysazej-dokument:
+                  image: texlive/texlive:latest  # Následující kód spouštěj uvnitř dockerového obrazu „texlive/texlive“ s instalací TeXu.
+                  tags:
+                  - shared-fi  # Použij výpočetní uzly poskytované Fakultou informatiky. Namísto nich bychom mohli využít také vlastní server.
+                  script:
+                  - xelatex dokument.tex  # Přelož soubor „dokument.tex“ pomocí TeXového stroje XeTeX s formátem LaTeX.
+                  artifacts:
+                    paths:
+                    - dokument.pdf  # Ulož a zpřístupni vytvořený soubor „dokument.pdf“.
+            </code>
+        </li>
+        <li>
+            Následně dokument přidejte do seznamu souborů spravovaných
+            systémem Git a vložte jako další revizi do svého lokálního
+            repozitáře.
+            <code class="ukazka_kodu">
+                $ <b>git add .gitlab-ci.yml</b>
+                $ <b>git commit --message "Vložen konfigurační soubor průběžné integrace."</b><br/>
+                [main eaf82bb] Vložen konfigurační soubor průběžné integrace.<br/>
+                &nbsp;1 file changed, 9 insertions(+)<br/>
+                &nbsp;create mode 100644 .gitlab-ci.yml<br/>
+            </code>
+            Následně své změny odešlete do vašeho repozitáře na fakultním
+            serveru.
+            <code class="ukazka_kodu">
+                $ <b>git push</b><br/>
+                Counting objects: 3, done.<br/>
+                Delta compression using up to 2 threads.<br/>
+                Compressing objects: 100% (2/2), done.<br/>
+                Writing objects: 100% (3/3), 981 bytes | 0 bytes/s, done.<br/>
+                Total 3 (delta 0), reused 0 (delta 0)<br/>
+                To https://gitlab.fi.muni.cz/<i>xnovot32</i>/PB029_sprava_verzi.git<br/>
+                &nbsp;&nbsp;&nbsp;18f0fe6..90da3a6&nbsp;&nbsp;main -&gt; main<br/>
+            </code>
+        </li>
+        <li>
+            Stav překladu dokumentu můžete sledovat na adrese
+            <a href="https://gitlab.fi.muni.cz/xnovot32/PB029-sprava-verzi/-/jobs">https://gitlab.fi.muni.cz/<i>xnovot32</i>/PB029-sprava-verzi/-/jobs</a>.
+        </li>
+        <li>
+            Po úspěšném překladu si můžete vytvořené soubory prohlédnout a
+            stáhnout na perzistentní adrese
+            <a href="https://gitlab.fi.muni.cz/xnovot32/PB029-sprava-verzi/-/jobs/artifacts/main/browse?job=vysazej-dokument">https://gitlab.fi.muni.cz/xnovot32/<i>PB029-sprava-verzi</i>/-/jobs/artifacts/main/browse?job=vysazej-dokument</a>.
+        </li>
+    </ol>
     <div class="tip-box">
         <p>
             <strong class="tip-headline">Tip:</strong>
-            V případě zájmu si můžete zatím prohlédnout připravovaný článek
-            <a href="https://www.overleaf.com/read/ypbzywphcgdc#e30de3"><em>Příprava (La)TeXových dokumentů v cloudu</em></a>
-            pro <a href="https://bulletin.cstug.cz/">Zpravodaj CSTUGu</a>,
-            který se zaobírá průběžnou integrací v kontextu přípravy elektronických
-            dokumentĹŻ.
+            Pro informace o průběžné integraci TeXových dokumentů jinde než na
+            GitLabu FI vizte připravovaný článek
+            <a href="https://www.overleaf.com/read/ypbzywphcgdc#e30de3"><em>Příprava (La)TeXových dokumentů v cloudu</em></a>.
         </p>
         <p>
             Na článek se vztahuje
-- 
GitLab