Kontinuirana integracija korištenjem GitLaba
Pored posluživanja Git repozitorija i povezanih usluga, GitLab nudi i funkcionalnost kontinuirane integracije, isporuke i implementacije (engl. continuous integration, delivery and deployment, kraće CI/CD).
Kontinuirana integracija omogućuje nam izgradnju, testiranje i pokretanje softvera u čistoj okolini, što nam pomaže pronaći probleme kod integracije promjena koji developeru možda promaknu dok radi u razvojnoj okolini. GitLab omogućuje korištenje Docker kontejnera ili vlastitih (virtualnih) računala u kojima se izvodi GitLab Runner.
Korištenje CI/CD u besplatnoj verziji GitLaba ograničeno je na 400 minuta mjesečno od rujna 2020. godine, što je sasvim dovoljno za eksperimentiranje i edukaciju.
Konfiguracija kontinuirane integracije
Recimo da imamo repozitorij u kojem postoje datoteke:
program.py
koja sadrži programbiblioteka.py
koja sadrži funkcijetest_biblioteka.py
koja sadrži testove funkcija iz datotekebiblioteka.py
koji se pokreću korištenjem pytesta
Kako bismo uključili kontinuiranu integraciju, na GitLabu je potrebno u tom repozitoriju stvoriti datoteku .gitlab-ci.yml
(više detalja o formatu YAML) s postavkama za testiranje (test:
) i pokretanje (run:
). Moguće je koristiti predložak za Python koji GitLab nudi. U našem slučaju postavit ćemo da datoteka bude oblika:
# This file is a template, and might need editing before it works on your project.
# Official language image. Look for the different tagged releases at:
# https://hub.docker.com/r/library/python/tags/
image: python:latest
# Change pip's cache directory to be inside the project directory since we can
# only cache local items.
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
# Pip's cache doesn't store the python packages
# https://pip.pypa.io/en/stable/reference/pip_install/#caching
#
# If you want to also cache the installed packages, you have to install
# them in a virtualenv and cache it as well.
cache:
paths:
- .cache/pip
- venv/
before_script:
- python -V # Print out python version for debugging
- pip install virtualenv
- virtualenv venv
- source venv/bin/activate
test:
script:
- pip install pytest
- venv/bin/pytest
run:
script:
- python program.py
Uočimo da se kod testiranja instalira i pokreće pytest
, a kod pokretanja sam program.py
. Odmah nakon commitanja ove datoteke u repozitorij GitLab će pokrenuti navedene poslove, a njihov rezultat možemo pratiti na GitLabu na stranici repozitorija u odjeljku CI/CD
: stranice Pipelines
i Jobs
.
Author: Vedran Miletić