Návod GitLab CICD » Historie » Verze 1
Jakub Vašta, 2020-05-20 18:14
1 | 1 | Jakub Vašta | h1. Návod GitLab CICD |
---|---|---|---|
2 | |||
3 | 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. |
||
4 | |||
5 | Zajímavá videa pro seznámení se s problematikou: |
||
6 | > * https://www.youtube.com/watch?v=gr76MNXZJfQ |
||
7 | > + Big picture |
||
8 | > + 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. |
||
9 | |||
10 | > * https://www.youtube.com/watch?v=34u4wbeEYEo&list=PLaFCDlD-mVOlnL0f9rl3jyOHNdHU--vlJ&index=1 |
||
11 | > + Indian guy saves the day :) |
||
12 | > + Víc prakticky zaměřené |
||
13 | > + Celá série |
||
14 | |||
15 | h2. Testovací server |
||
16 | |||
17 | 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í) a 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). |
||
18 | |||
19 | h3. Instalace gitlab-runner |
||
20 | Pokud si tedy zřídíte vlastní testovací server (vřele doporučuji, budete mít nad ním plnou kontrolu a budete si moct 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 (nezapomeňte na krok https://docs.gitlab.com/runner/install/linux-repository.html#disable-skel) dle https://docs.gitlab.com/runner/install/linux-repository.html |
||
21 | 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. |
||
22 | Doinstalujte si na server vše co budete k testování potřebovat např. _Docker_ |
||
23 | |||
24 | h2. Tvorba pipeline |
||
25 | V kořenovém adresáři vytvořte soubor _.gitlab-ci.yml_, viz následující ukázka, který bude řídit celý proces. |
||
26 | |||
27 | <pre><code class="yaml"> |
||
28 | |||
29 | stages: |
||
30 | - test |
||
31 | - linter |
||
32 | - build |
||
33 | - deploy |
||
34 | |||
35 | unit_tests: |
||
36 | stage: test |
||
37 | tags: |
||
38 | - test |
||
39 | script: |
||
40 | - cd website |
||
41 | - composer require --dev symfony/phpunit-bridge |
||
42 | - php bin/phpunit |
||
43 | |||
44 | php_linter: |
||
45 | stage: linter |
||
46 | tags: |
||
47 | - linter |
||
48 | script: |
||
49 | - cd website |
||
50 | - composer require --dev squizlabs/php_codesniffer |
||
51 | - ./vendor/bin/php-cs-fixer fix --dry-run --config .php_cs --stop-on-violation --using-cache=no |
||
52 | build: |
||
53 | stage: build |
||
54 | tags: |
||
55 | - build |
||
56 | script: |
||
57 | - docker-compose build |
||
58 | |||
59 | deploy_prod: |
||
60 | stage: deploy |
||
61 | tags: |
||
62 | - deploy |
||
63 | variables: |
||
64 | GIT_STRATEGY: none |
||
65 | environment: |
||
66 | name: heatmap |
||
67 | url: https://heatmap.zcu.cz |
||
68 | script: |
||
69 | - ssh root@myserver.zcu.cz "... whatever ..." |
||
70 | only: |
||
71 | - master |
||
72 | when: manual |
||
73 | |||
74 | </code></pre> |
||
75 | |||
76 | * *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 |
||
77 | * Dle *tagu* se dá přiřazovat různým testovacím serverům resp. gitlab-runnerům |
||
78 | * *Script* je v podstatě to co poběží de facto v shellu testovacího serveru |
||
79 | * Pokud neswtanovíte jinak, tak se automaticky repo stáhne z GitLabu viz GIT_STRATEGY |
||
80 |