Projekt

Obecné

Profil

Akce

Návod GitLab CICD » Historie » Revize 4

« Předchozí | Revize 4/13 (rozdíl) | Další »
Jakub Vašta, 2020-05-20 18:21


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:

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í) 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).

Instalace gitlab-runner

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
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 si na server vše co budete k testování potřebovat např. Docker

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

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.


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

  • 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 neswtanovíte jinak, tak se automaticky repo stáhne z GitLabu viz GIT_STRATEGY

Aktualizováno uživatelem Jakub Vašta před asi 4 roky(ů) · 4 revizí