|
|
|
# gitlab-ci.yml
|
|
|
|
|
|
|
|
Malleja CI/CD-ketjun luomisesta front- ja backendille.
|
|
|
|
|
|
|
|
## Frontend
|
|
|
|
|
|
|
|
```yml
|
|
|
|
# vaiheet, joita ketjussa on
|
|
|
|
stages:
|
|
|
|
- snapshot-test
|
|
|
|
- push-image
|
|
|
|
- deploy
|
|
|
|
|
|
|
|
unit-testing:
|
|
|
|
# jos käytössä dockeria tukeva gitlab runner, voidaan määrittää mitä imagea käytetään.
|
|
|
|
image: node:10.15.3
|
|
|
|
# tulee olla sama, mitä aiemmin stages-kohdassa määriteltiin
|
|
|
|
stage: snapshot-test
|
|
|
|
# tagit, joilla määrätään, mitkä runnerit voivat ajaa tämän taskin
|
|
|
|
tags: ['unit-testing']
|
|
|
|
# ajetaan vain development ja testing branchissä
|
|
|
|
only:
|
|
|
|
- development
|
|
|
|
- testing
|
|
|
|
# Itse skripti, joka ajetaan.
|
|
|
|
script:
|
|
|
|
- npm i
|
|
|
|
- echo WIP snapshot-testing
|
|
|
|
|
|
|
|
docker-push:
|
|
|
|
image: docker
|
|
|
|
# docker service, voi asentaa aiemman Docker imagen päälle toisen palveluksi
|
|
|
|
services:
|
|
|
|
- docker:dind
|
|
|
|
stage: push-image
|
|
|
|
tags: ['docker']
|
|
|
|
only:
|
|
|
|
- testing
|
|
|
|
before_script:
|
|
|
|
# tarvitaan, jotta kirjautuminen tallentuu docker loginista
|
|
|
|
- sudo apt install gnupg2 pass -y
|
|
|
|
# käytetään gitlabin muuttujia DOCKERHUB_PASS ja DOCKERHUB_USER kirjautumiseen
|
|
|
|
# muuttujat voi määrittää projektin settings > ci/cd > variables kautta
|
|
|
|
- echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USER" --password-stdin
|
|
|
|
script:
|
|
|
|
- docker build -t overflow2019/frontend:test .
|
|
|
|
- docker push overflow2019/frontend
|
|
|
|
after_script:
|
|
|
|
- docker logout
|
|
|
|
```
|
|
|
|
|
|
|
|
## Backend
|
|
|
|
|
|
|
|
```yml
|
|
|
|
stages:
|
|
|
|
- unit-test
|
|
|
|
- e2e-test
|
|
|
|
- deploy
|
|
|
|
|
|
|
|
unit-testing:
|
|
|
|
image: node:10.15.3
|
|
|
|
stage: unit-test
|
|
|
|
tags: ['unit-testing']
|
|
|
|
only:
|
|
|
|
- development
|
|
|
|
- testing
|
|
|
|
script:
|
|
|
|
- npm i
|
|
|
|
- npm test
|
|
|
|
|
|
|
|
e2e-testing:
|
|
|
|
image:
|
|
|
|
name: docker/compose:1.24.0
|
|
|
|
entrypoint: ['/bin/sh', '-c']
|
|
|
|
services:
|
|
|
|
- docker:dind
|
|
|
|
stage: e2e-test
|
|
|
|
tags: ['compose']
|
|
|
|
only:
|
|
|
|
- testing
|
|
|
|
before_script:
|
|
|
|
- echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USER" --password-stdin
|
|
|
|
script:
|
|
|
|
- docker image prune -f
|
|
|
|
- docker-compose build --no-cache
|
|
|
|
- docker-compose up -d
|
|
|
|
after_script:
|
|
|
|
- docker logout
|
|
|
|
when: manual
|
|
|
|
``` |