image: maven:eclipse-temurin stages: - build - test - package - deploy variables: SKIP_DB_TESTS: "true" # Set this variable to "true" to skip database tests build: stage: build script: - mvn compile test: stage: test script: - | if [[ "$SKIP_DB_TESTS" == "true" ]]; then mvn clean test -Dtest=!**/database/**/* else mvn clean test fi artifacts: paths: - target/surefire-reports/ reports: junit: target/surefire-reports/TEST-*.xml coverage_report: coverage_format: cobertura path: target/jacoco/coverage-reports/jacoco.xml package: stage: package script: - | if [[ "$SKIP_DB_TESTS" == "true" ]]; then mvn clean package -Dtest=!**/database/**/* else mvn clean package fi artifacts: paths: - 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 - 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: - 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: - | if [[ "$SKIP_DB_TESTS" == "true" ]]; then mvn clean package -Dtest=!**/database/**/* else mvn clean package fi - mvn javadoc:javadoc - ls target/site/ - ls target/site/apidocs/ - mkdir .public - cd .public - mkdir apidocs - cd .. - cp -rf target/site/apidocs/* .public/apidocs/ - cp -rf target/jacoco/* .public - mkdir .public/JAR - cp -rf target/QuickList-1.0-SNAPSHOT-jar-with-dependencies.jar .public/JAR/ - mv -f .public public artifacts: paths: - public