Návod GitLab CICD » Historie » Verze 2
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 | 2 | Jakub Vašta | |
21 | 1 | Jakub Vašta | 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 |
22 | 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. |
||
23 | Doinstalujte si na server vše co budete k testování potřebovat např. _Docker_ |
||
24 | |||
25 | h2. Tvorba pipeline |
||
26 | 2 | Jakub Vašta | |
27 | 1 | Jakub Vašta | V kořenovém adresáři vytvořte soubor _.gitlab-ci.yml_, viz následující ukázka, který bude řídit celý proces. |
28 | |||
29 | <pre><code class="yaml"> |
||
30 | |||
31 | stages: |
||
32 | - test |
||
33 | - linter |
||
34 | - build |
||
35 | - deploy |
||
36 | |||
37 | unit_tests: |
||
38 | stage: test |
||
39 | tags: |
||
40 | - test |
||
41 | script: |
||
42 | - cd website |
||
43 | - composer require --dev symfony/phpunit-bridge |
||
44 | - php bin/phpunit |
||
45 | |||
46 | php_linter: |
||
47 | stage: linter |
||
48 | tags: |
||
49 | - linter |
||
50 | script: |
||
51 | - cd website |
||
52 | - composer require --dev squizlabs/php_codesniffer |
||
53 | - ./vendor/bin/php-cs-fixer fix --dry-run --config .php_cs --stop-on-violation --using-cache=no |
||
54 | build: |
||
55 | stage: build |
||
56 | tags: |
||
57 | - build |
||
58 | script: |
||
59 | - docker-compose build |
||
60 | |||
61 | deploy_prod: |
||
62 | stage: deploy |
||
63 | tags: |
||
64 | - deploy |
||
65 | variables: |
||
66 | GIT_STRATEGY: none |
||
67 | environment: |
||
68 | name: heatmap |
||
69 | url: https://heatmap.zcu.cz |
||
70 | script: |
||
71 | - ssh root@myserver.zcu.cz "... whatever ..." |
||
72 | only: |
||
73 | - master |
||
74 | when: manual |
||
75 | |||
76 | </code></pre> |
||
77 | |||
78 | * *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 |
||
79 | * Dle *tagu* se dá přiřazovat různým testovacím serverům resp. gitlab-runnerům |
||
80 | * *Script* je v podstatě to co poběží de facto v shellu testovacího serveru |
||
81 | * Pokud neswtanovíte jinak, tak se automaticky repo stáhne z GitLabu viz GIT_STRATEGY |
||
82 |