GitLab pozwala na zdefiniowanie potoku CI/CD dla danego projektu za pomocą pliku konfiguracyjnego .gitlab-ci.yml. W niniejszym wpisie przedstawiona jest jedynie podstawowa konfiguracja.
Plik .gitlab-ci.yml
Plik .gitlab-ci.yml musi posiadać dokładnie taką nazwę oraz być umieszczony w katalogu głównym projektu. Z racji rozszerzenia pliku yml obowiązują wcięcia dwu-odstępowe (dwie spacje).
Definicja etapów (stages)
Za pomocą sekcji stages możliwe jest zdefiniowanie kolejności wykonania tzw. zadań (job). Egzekucja zadań jest wykonywana w tej samej kolejności co definicja etapów (do każdego etapu można przypisać wiele zadań co spowoduje równoległe wykonanie zadań):
stages:
- build
- test
- deploy
- validate
Zadanie (job)
Zadanie definiują pracę do wykonania. Zadanie definiujemy na poziomie zerowym (bez żadnego wcięcia) podając jego nazwę i kończąc dwukropkiem:
build app:
Przypisanie zadania do etapu
Aby przypisać zadanie do zdefiniowanego etapu, należy użyć opcji stage (jeśli nie zdefiniujemy żadnego etapu to domyślnie zadanie będzie przypisane do etapu o nazwie test):
build app:
stage: build
Obraz Dockerowy
Każde zadanie wykonuje się w ramach jakiegoś obrazu Dockerowego (jeśli nie zostanie on jawnie podany, to zostanie zastosowany domyślny obraz dla GitLab runnera):
build app:
image: maven
Skrypt (script)
Sekcja script pozwala na zdefiniowanie tego co ma wykonać dane zadanie (dostępne są wszystkie komendy, które obsłuży kontener powstały z obrazu Dockerowego):
build app:
stage: build
image: maven
script:
- git clone somerepository_url
- mvn package
Przykładowa konfiguracja (w całości)
Konfiguracja jest celowo uproszczona 🙂
stages:
- build
- test
build app:
stage: build
image: maven
script:
- git clone somerepository_url
- mvn -DskipTest package
test app:
stage: test
image: maven
script:
- git clone somerepository_url
- mvn test