diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..9f83a45 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,113 @@ +# Taken from: +# https://gitlab.stud.idi.ntnu.no/oysteikt/h20-tdt4100-project/-/blob/master/.gitlab-ci.yml + +image: maven:3-openjdk-16-slim + +variables: + + # This will suppress any download for dependencies and plugins or upload messages which would clutter the console log. + # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work. + MAVEN_OPTS: " \ + -Dhttps.protocols=TLSv1.2 \ + -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository \ + -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN \ + -Dorg.slf4j.simpleLogger.showDateTime=true \ + -Djava.awt.headless=true" + + # As of Maven 3.3.0 instead of this you may define these options in `.mvn/maven.config` so the same config is used + # when running from the command line. + MAVEN_CLI_OPTS: " \ + --batch-mode \ + --errors \ + --fail-at-end \ + --show-version \ + -Dprism.verbose=true \ + -Dtestfx.robot=glass \ + -Dtestfx.headless=true \ + -Dglass.platform=Monocle \ + -Dprism.order=sw \ + -Dprism.text=t2k \ + -Dtestfx.setup.timeout=60000" + +# Cache downloaded dependencies and plugins between builds. +# To keep cache across branches add 'key: "$CI_JOB_NAME"' +cache: + paths: + - .m2/repository + +stages: + - build + - test + - docs + - postprocessing + - deploy + +build: + stage: build + script: + - "mvn clean compile $MAVEN_CLI_OPTS" + artifacts: + paths: + - target/ + +unittest: + stage: test + needs: [build] + script: + - "apt update" + - "apt install -y openjfx" + - "mvn package $MAVEN_CLI_OPTS" + artifacts: + paths: + - target/ + when: always + reports: + junit: + - target/surefire-reports/TEST-*.xml + +generate-coverage: + stage: docs + script: + - "apt update" + - "apt install -y openjfx" + - 'mvn clean jacoco:prepare-agent test $MAVEN_CLI_OPTS jacoco:report' + - 'cat target/site/jacoco/index.html' + coverage: '/Total.*?([0-9]{1,3})%/' + artifacts: + paths: + - target/site/jacoco + +process-coverage: + stage: postprocessing + image: haynes/jacoco2cobertura:1.0.4 + needs: [generate-coverage] + script: + # convert report from jacoco to cobertura + - 'python /opt/cover2cover.py target/site/jacoco/jacoco.xml src/main/java > target/site/cobertura.xml' + # read the tag and prepend the path to every filename attribute + - 'python /opt/source2filename.py target/site/cobertura.xml' + artifacts: + reports: + cobertura: target/site/cobertura.xml + +# generate-apidocs: +# stage: docs +# script: +# - 'mvn clean javadoc:javadoc' +# artifacts: +# paths: +# - target/site/apidocs + +pages: + stage: deploy + # needs: [generate-coverage, generate-apidocs] + needs: [generate-coverage] + script: + - mv target/site/jacoco public/ + # - mv target/site/apidocs public/ + artifacts: + paths: + - public + expire_in: 30 days + only: + - master