forked from I2P_Developers/i2p.i2p
140 lines
5.6 KiB
YAML
140 lines
5.6 KiB
YAML
image: openjdk:8-alpine
|
|
|
|
stages:
|
|
- test
|
|
- build
|
|
|
|
test:gradle:
|
|
stage: test
|
|
coverage: '/Total.*?([0-9]{1,3})%/'
|
|
before_script:
|
|
- apk add --no-cache grep
|
|
script:
|
|
- ./gradlew codeCoverageReport
|
|
# The actual output that will be parsed by the code coverage
|
|
- grep -oP "Total.*?%" build/reports/jacoco/html/index.html
|
|
cache:
|
|
key: ${CI_COMMIT_REF_SLUG}
|
|
paths:
|
|
- $HOME/.gradle/caches/
|
|
- $HOME/.gradle/wrapper/
|
|
- .gradle
|
|
only:
|
|
- master
|
|
- merge_requests
|
|
- tags
|
|
|
|
test:ant:
|
|
stage: test
|
|
image: debian:buster-slim
|
|
variables:
|
|
SCALA: https://downloads.lightbend.com/scala/2.12.13/scala-2.12.13.deb
|
|
LIBPREFIX: /usr/share/scala/lib
|
|
LIB_SCALATEST: https://repo1.maven.org/maven2/org/scalatest/scalatest_2.12/3.0.4/scalatest_2.12-3.0.4.jar
|
|
LIB_SCALACTIC: https://repo1.maven.org/maven2/org/scalactic/scalactic_2.12/3.0.4/scalactic_2.12-3.0.4.jar
|
|
before_script:
|
|
# Fix bug installing openjdk-11-jdk-headless's manuals
|
|
- mkdir -p /usr/share/man/man1/
|
|
- apt-get update -q
|
|
- apt-get install -y wget gettext
|
|
ant default-jdk-headless
|
|
libmockito-java libhamcrest-java junit4
|
|
# Install specific version of scala
|
|
- wget -qO scala.deb "${SCALA}"
|
|
- dpkg -i scala.deb
|
|
# link to the scala libs with the name `ant test` expects
|
|
- ln -s "${LIBPREFIX}/scala-xml_2.12-1.0.6.jar" "${LIBPREFIX}/scala-xml.jar"
|
|
# Download required scala libs
|
|
- wget -qO "${LIBPREFIX}/scalactic.jar" "${LIB_SCALACTIC}"
|
|
- wget -qO "${LIBPREFIX}/scalatest.jar" "${LIB_SCALATEST}"
|
|
# Point ant to the right directories
|
|
- echo scalatest.libs=/usr/share/scala/lib > override.properties
|
|
- echo junit.home=/usr/share/java >> override.properties
|
|
- echo hamcrest.home=/usr/share/java >> override.properties
|
|
- echo mockito.home=/usr/share/java >> override.properties
|
|
- echo build.built-by=GitHub Actions >> override.properties
|
|
script:
|
|
- ant test
|
|
only:
|
|
- master
|
|
- merge_requests
|
|
- tags
|
|
|
|
test:javadoc:
|
|
stage: test
|
|
image: debian:unstable-slim
|
|
variables:
|
|
SCALA: https://downloads.lightbend.com/scala/2.12.13/scala-2.12.13.deb
|
|
LIBPREFIX: /usr/share/scala/lib
|
|
LIB_SCALATEST: https://repo1.maven.org/maven2/org/scalatest/scalatest_2.12/3.0.4/scalatest_2.12-3.0.4.jar
|
|
LIB_SCALACTIC: https://repo1.maven.org/maven2/org/scalactic/scalactic_2.12/3.0.4/scalactic_2.12-3.0.4.jar
|
|
before_script:
|
|
# Fix bug installing openjdk-11-jdk-headless's manuals
|
|
- mkdir -p /usr/share/man/man1/
|
|
- apt-get update -q
|
|
- apt-get install -y wget gettext
|
|
ant openjdk-21-jdk-headless
|
|
libmockito-java libhamcrest-java junit4
|
|
# Install specific version of scala
|
|
- wget -qO scala.deb "${SCALA}"
|
|
- dpkg -i scala.deb
|
|
# link to the scala libs with the name `ant test` expects
|
|
- ln -s "${LIBPREFIX}/scala-xml_2.12-1.0.6.jar" "${LIBPREFIX}/scala-xml.jar"
|
|
# Download required scala libs
|
|
- wget -qO "${LIBPREFIX}/scalactic.jar" "${LIB_SCALACTIC}"
|
|
- wget -qO "${LIBPREFIX}/scalatest.jar" "${LIB_SCALATEST}"
|
|
# Point ant to the right directories
|
|
- echo scalatest.libs=/usr/share/scala/lib > override.properties
|
|
- echo junit.home=/usr/share/java >> override.properties
|
|
- echo hamcrest.home=/usr/share/java >> override.properties
|
|
- echo mockito.home=/usr/share/java >> override.properties
|
|
- echo build.built-by=GitHub Actions >> override.properties
|
|
script:
|
|
- ant javadoc
|
|
only:
|
|
- master
|
|
- merge_requests
|
|
- tags
|
|
|
|
# Make sure we can build a docker image
|
|
# It's cached for later jobs
|
|
build_docker:
|
|
stage: build
|
|
image: docker:24.0.7
|
|
services:
|
|
- docker:24.0.7-dind
|
|
script:
|
|
# Try to load latest branch image from local tar or from registry
|
|
- docker load -i ci-exports/$CI_COMMIT_REF_SLUG.tar || docker pull $CI_REGISTRY_IMAGE:latest || true
|
|
- docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:latest .
|
|
- mkdir -p ci-exports/
|
|
- echo docker save $CI_REGISTRY_IMAGE:latest > ci-exports/$CI_COMMIT_REF_SLUG.tar
|
|
variables:
|
|
# When using dind service, we need to instruct docker to talk with
|
|
# the daemon started inside of the service. The daemon is available
|
|
# with a network connection instead of the default
|
|
# /var/run/docker.sock socket. Docker 19.03 does this automatically
|
|
# by setting the DOCKER_HOST in
|
|
# https://github.com/docker-library/docker/blob/d45051476babc297257df490d22cbd806f1b11e4/19.03/docker-entrypoint.sh#L23-L29
|
|
#
|
|
# The 'docker' hostname is the alias of the service container as described at
|
|
# https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#accessing-the-services.
|
|
#
|
|
# Specify to Docker where to create the certificates, Docker will
|
|
# create them automatically on boot, and will create
|
|
# `/certs/client` that will be shared between the service and job
|
|
# container, thanks to volume mount from config.toml
|
|
DOCKER_TLS_CERTDIR: "/certs"
|
|
# Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
|
|
# DOCKER_HOST: tcp://docker:2376
|
|
cache:
|
|
# The same key should be used across branches
|
|
key: "$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- ci-exports/
|
|
only:
|
|
- master
|
|
- merge_requests
|
|
- tags
|
|
|