Návod GitLab CICD » Historie » Revize 10
Revize 9 (Jakub Vašta, 2020-05-20 18:31) → Revize 10/13 (Jakub Vašta, 2020-05-20 18:31)
h1. Návod GitLab CICD Na úvod bych chtěl zmínit, že okumentace GitLabu je velmi dobrá a je vhodné z ní čerpat. Tento návod tedy spíše popisuje, jak udělat jednoduchou pipeline pro _testování, linter, build a deploy_ webové aplikace založené na technologii _Docker_ (resp. _Docker-Compose_) v prostředí GitLabu používaném na ZČU. Zajímavá videa pro seznámení se s problematikou: > * https://www.youtube.com/watch?v=gr76MNXZJfQ > + Big picture > + Nezabíhá se příliš do detailů, ale je ukázáno čeho se dá dosáhnout, aneb hodí se vědět co vše to dokáže. > * https://www.youtube.com/watch?v=34u4wbeEYEo&list=PLaFCDlD-mVOlnL0f9rl3jyOHNdHU--vlJ&index=1 > + Indian guy saves the day :) > + Víc prakticky zaměřené > + Celá série h2. Testovací server GitLab pipeline musí mít k dispozici server, na kterém se bude spouštět. V GitLabu ZČU je nainstalovaný _shared runner_ (https://docs.gitlab.com/ee/ci/runners/), který lze využít. Jediný problém nastává tehdy, když je potřeba spouštět _Docker_ jelikož sám tento _gitlab-runner_ běží v _Dockeru_ (alespoň je tomu tak nyní). V tomto případě narazíte na problematiku spuštění _docker-in-docker_ (ne že by to nešlo udělat, ale přináší to s sebou jisté problémy). h3. Instalace gitlab-runner *Pokud Pokud si tedy zřídíte vlastní testovací server (vřele doporučuji, budete mít nad ním plnou kontrolu a budete si moci dělat co chcete - když si na ZČU požádáte o server neměli byste mít potíže ho dostat), tak postupujte dle https://docs.gitlab.com/runner/install/linux-repository.html (*nezapomeňte zvážit krok* https://docs.gitlab.com/runner/install/linux-repository.html#disable-skel) *Po Po instalaci proveďte registraci https://docs.gitlab.com/runner/register/ , doporučuji zvolit variantu _shell_ tzn. každý příkaz v pipeline bude spuštěn v shellu. *Doinstalujte Doinstalujte si na server vše co budete k testování potřebovat např. _Docker_ *Pokud Pokud pipeline nefunguje, tak zkuste https://gitlab.com/gitlab-org/gitlab-runner/issues/4449 - stačí se přihlásit jako uživatel gitlab-runner a aplikovat řešní tzn. smazat soubor *~/.bash_logout* h2. Tvorba pipeline V kořenovém adresáři vytvořte soubor _.gitlab-ci.yml_, viz následující ukázka, který bude řídit celý proces. <pre><code class="yaml"> stages: - test - linter - build - deploy unit_tests: stage: test tags: - test script: - cd website - composer require --dev symfony/phpunit-bridge - php bin/phpunit php_linter: stage: linter tags: - linter script: - cd website - composer require --dev squizlabs/php_codesniffer - ./vendor/bin/php-cs-fixer fix --dry-run --config .php_cs --stop-on-violation --using-cache=no build: stage: build tags: - build script: - docker-compose build deploy_prod: stage: deploy tags: - deploy variables: GIT_STRATEGY: none environment: name: heatmap url: https://heatmap.zcu.cz script: - ssh root@myserver.zcu.cz "... whatever ..." only: - master when: manual </code></pre> * Celá pipeline běží vždy při změně repozitáře (pozn. lze změnit viz _only_ a _when_ např. nechcete deploy dělat automaticky a z jiných větví) * *Stages* udává jednotlivé fáze pipeline, které buď projdou nebo selžou - pokud selže jedna fáze, tak navazující již nejsou spuštěny * Dle *tagu* se dá přiřazovat různým testovacím serverům resp. gitlab-runnerům * *Script* je to co de facto poběží v shellu testovacího serveru (nehledejte v tom vědu) * Pokud nestanovíte jinak, tak se automaticky repo stáhne z GitLabu viz GIT_STRATEGY