Gitlab CI/CD
Gitlab pipelines
Yliopistolla on sovelluskehittäjiä varten Gitlab versionhallinta-palvelu.
Gitlab CI/CD
Gitlabissa on Github Actions kaltainen toiminto, CI/CD pipelines. Sitä käyttämällä saa jatkuvan integraation, mukaan lukien automaattitestit pyörimään jokaiselle commitile.
Pipelinet koostuvat Jobs:eista ja Stage:ista. Jobit määrittelevät mitä tapahtuu, ja staget milloin tapahtuu. Vaikka kaksi jobia olisivat samalla stagella, voidaan ne silti suorittaa erikseen.
Esimerkki pipeline voi koostua seuraavista osista:
Stage | Jobs | Kuvaus |
---|---|---|
build | compile | Kääntää ohjelmakoodin |
test | linter, test | Tarkistaa että koodin on ulkoasultaan oikea ja ajaa testit |
staging | upload_to_staging | Siirtää koodin staging ympäristöön kun kaikki aiemmat osat ovat menneet läpi |
Pipeline suoritetaan Gitlab Runnerilla, joka ajetaan joko lokaalisti tai palvelimella. Näiden lisäksi yliopistolla on käytössä shared runnereita. Sen sijaan, että sinun tarvitsi tilata maksullinen palvelin vain tätä varten,
kannattaa käyttää shared runnereita jotka on integroitu suoraan version.helsinki.fi:hin. Saat ne käyttöösi lisäämällä .gitlab-ci.yml tiedostossasi jobiin tagin: Shared-runner. Yliopiston shared-runnerit ovat tälle tarkoitetulla virtuaalipalvelimella ja jos niiden käyttö kasvaa niitä voidaan lisätä jotta runnerien odotusaika lyhenee.
.gitlab-ci.yml
Alla esimerkkinä ote erään Node.js:llä toteutetun projektin Gitlab pipelinesta.
.client_cache:
cache:
key: client
paths:
- client/.npm
policy: pull
stages:
- setup
- test
client_setup_job:
stage: setup
variables:
npm_config_cache: '$CI_PROJECT_DIR/client/.npm'
script:
- cd client/
- npm ci
extends: .client_cache
cache:
policy: pull-push
artifacts:
expire_in: 1h
paths:
- client/node_modules
tags:
- Shared-runner
client_test_job:
stage: test
needs: ['client_setup_job']
coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
script:
- cd client/
- npm run jest:coverage
extends: .client_cache
artifacts:
expire_in: 1 week
paths:
- client/coverage/cobertura-coverage.xml
reports:
cobertura: client/coverage/cobertura-coverage.xml
tags:
- Shared-runner
client_lint_job:
stage: test
needs: ['client_setup_job']
script:
- cd client/
- npm run lint
extends: .client_cache
tags:
- Shared-runner
Nimi | Tehtävä | Job |
---|---|---|
image: node:17.9.0 | Määrittää pipelinessa käytettävän version Node.js:stä | EI |
.client_cache: | Määrittää .cache välimuistin jota pystytään käyttämään kun jobiin laitetaan " extends: .client_cache" | Ei |
stages: | Määrittelee staget joihin kuuluvia jobeja kutsutaan tässä määritellyssä järjestyksessä | Ei |
client_setup_job: | Setup stagen job, joka käynnistää package.json mukaisesti clientin. Huomaa tags: | Kyllä |
client_test_job: | Test stagen job, joka ajaa testit ja tekee kattavuusraportin. Huomaa tags: | Kyllä |
client_lint_job: | Test stagen job, joka tarkistaa että koodi on tyyliasultaan oikeanlaista. Huomaa tags: | Kyllä |
Lisää projektillesi käytettävistä runnereista näet Gitlabissa: Settings → CI/CD → Runnerit
Jos testisi vaativat salaisuuksia tai ympäristömuuttujia jotka haluat suojata,
Voit määritellä ne Gitlabissa: Settings → CI/CD → Variables
Variableista lisää: Gitlab CI variables