Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.83 KiB
Newer Older
image: maven:eclipse-temurin

stages:
  - build
  - test
  - package
  - deploy

Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
variables:
  SKIP_DB_TESTS: "true" # Set this variable to "true" to skip database tests


build:
  stage: build
  script:
    - mvn compile

test:
  stage: test
  script:
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
    - |
      if [[ "$SKIP_DB_TESTS" == "true" ]]; then
        mvn clean test -Dtest=!**/database/**/*
      else
        mvn clean test
      fi
  artifacts:
    paths:
      - target/surefire-reports/
    reports:
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
      junit: target/surefire-reports/TEST-*.xml
      coverage_report:
        coverage_format: cobertura
        path: target/jacoco/coverage-reports/jacoco.xml

package:
  stage: package
  script:
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
    - |
      if [[ "$SKIP_DB_TESTS" == "true" ]]; then
        mvn clean package -Dtest=!**/database/**/*
      else
        mvn clean package
      fi
  artifacts:
    paths:
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
      - target/QuickList-1.0-SNAPSHOT-jar-with-dependencies.jar

generatepdf:
  image: ubuntu:20.04 #20.04  # vi kjører dette i en docker container, som kjører Ubuntu Linux
  stage: deploy # vi kjører den parallelt med å publisere javadoc til Pages
  when: manual
  script:
    - apt-get update --allow-insecure-repositories  # apt-get er en pakkehåndterer som kan laste ned og installere pakker på linux-system
    - apt-get install -y wget  # installerer et tool som heter "wget", som kan fyre av HTML-requester på kommandolinja
    - apt-get install -y fontconfig libfreetype6 libjpeg-turbo8 libpng16-16 libx11-6 libxcb1 libxext6 libxrender1 xfonts-75dpi xfonts-base  # installerer en bunsj med libs vi trenger for konverteringen til PDF
    - wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb  # Henter HTML-til-PDF-konverterer fra git. Vi bruker denne spesifikke pakken fordi vi vet at den fungerer i miljøet vi kjører i
    - dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb  # Installerer pakken vi lastet ned i forrige steg
    - apt-get -y install nodejs  # installerer nodejs
    - apt-get -y install npm  # installerer npm, som er en pakkehåndterer (litt likt apt-get) for (hovedsaklig) javascript-biblioteker
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
    - npm install -g github-wikito-converter  # installerer wiki-til-html-konverterer via npm
    - apt-get -y install git  # installerer git
    - export my_url="${CI_PROJECT_URL:8}" # Fjerner https:// fra URLen
    - export final_url="https://gitlab-ci-token:$CI_JOB_TOKEN@$my_url"  # Bruker CI-token for å omgå krav til brukernavn/passord
    - git clone "$final_url.wiki.git"  # hver eneste gitlab-wiki ligger i et eget repo, og kan klones med git som man kloner andre prosjekter
    - gwtc $CI_PROJECT_NAME.wiki  # NB! DERSOM DENNE FEILER, ERSTATT MED NAVNET PÅ REPOET (enkelte gitlab-instanser ser ut til å gi denne feil verdi for gruppeprosjekter)
    - wkhtmltopdf documentation.html wiki.pdf  # Dette konverterer fra HTML til PDF
  artifacts:
    paths:
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
      - wiki.pdf  # Vi gjør fila tilgjengelig som en nedlastbar artefakt (CI/CD -> Pipelines, deretter ikon helt til høyre for bygget). Fila kalles wiki.pdf.
  only:
    - web  # Only web gjør at vi kun kjører denne delen av pipeline når en trykker på knappen "Run pipeline"


# NB! Javadoc genereres IKKE under bygging av prosjektet. Man må kjøre javadoc lokalt og legge til katalogen (med navnet "javadoc")
# til roten av prosjektet. Ellers vil denne delen feile.
pages:
  stage: deploy
  when: manual
  script:
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
    - |
      if [[ "$SKIP_DB_TESTS" == "true" ]]; then
        mvn clean package -Dtest=!**/database/**/*
      else
        mvn clean package
      fi
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
    - mvn javadoc:javadoc
    - ls target/site/
    - ls target/site/apidocs/
    - mkdir .public
    - cd .public
    - mkdir apidocs
    - cd ..
    - cp -rf target/jacoco/* .public
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
    - mkdir .public/JAR
    - cp -rf target/QuickList-1.0-SNAPSHOT-jar-with-dependencies.jar .public/JAR/
    - mv -f .public public
  artifacts:
    paths:
Daniel Moe Kvarsnes's avatar
Daniel Moe Kvarsnes committed
      - public