diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..44901016879ede9758056320987bd0e48b7ac00f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +.gitlab-ci +Dockerfile +README.md +LICENSE diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..6bf5a199848da1eaca03387941eb7d62cd833bdc --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,54 @@ +image: docker:latest + +# mostly taken from: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html + +variables: + DOCKER_REPOSITORY: git-st.inf.tu-dresden.de:4567 + CONTAINER_RELEASE_IMAGE: $DOCKER_REPOSITORY/stgroup/ttc18:latest + CONTAINER_TEST_IMAGE: $DOCKER_REPOSITORY/stgroup/ttc18:$CI_COMMIT_REF_NAME + + +stages: + - build + - test + - release + +before_script: + - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $DOCKER_REPOSITORY + +build: + stage: build + tags: + - dockered + script: + - docker build --pull -t $CONTAINER_TEST_IMAGE . + - docker push $CONTAINER_TEST_IMAGE + + +test_benchmark: + stage: test + tags: + - dockered + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker run $CONTAINER_TEST_IMAGE /ttc18/gradlew benchmarkFull -Pscenario=0,small 2>&1 | tee benchmarkFull.log + - ! grep "BUILD FAILED" benchmarkFull.log + +test_unit_tests: + stage: test + tags: + - dockered + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker run $CONTAINER_TEST_IMAGE /ttc18/gradlew test + +release-image: + stage: release + tags: + - dockered + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE + - docker push $CONTAINER_RELEASE_IMAGE + only: + - master diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..52fc64f8b7e12ebe586c1ae4647dd15862b67650 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,69 @@ +# glpk also from https://github.com/dmccloskey/glpk/blob/master/Dockerfile + +# Set the base image to Ubuntu +FROM ubuntu:latest +# Switch to root for install +USER root + +RUN apt-get update -y && apt-get install -y \ + openjdk-8-jdk \ + libglpk-java \ + glpk-utils \ + --no-install-recommends \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +ENV HOME /home/user + +RUN useradd --create-home --home-dir $HOME user \ + && chmod -R u+rwx $HOME \ + && chown -R user:user $HOME + +# now prepare ttc18 folder +RUN mkdir /ttc18 +RUN chown user:user -R /ttc18 + +USER user +WORKDIR /ttc18 + +# start optimization: first download +# see also here https://github.com/heroku/docker-gradle/blob/master/Dockerfile +ADD gradlew . +ADD gradle gradle +ADD gradle.properties . +ADD gradle gradle +ADD settings.gradle . +# following is not used as it needs too much maintenance +# ADD jastadd-mquat-solver-ilp/build.gradle jastadd-mquat-solver-ilp/build.gradle +# ADD jastadd-mquat-solver/build.gradle jastadd-mquat-solver/build.gradle +# ADD jastadd-mquat-base/build.gradle jastadd-mquat-base/build.gradle +# ADD jastadd-mquat-base/jastadd_modules jastadd-mquat-base/jastadd_modules +# ADD jastadd-mquat-solver-aco/build.gradle jastadd-mquat-solver-aco/build.gradle +# ADD jastadd-mquat-solver-emfer/build.gradle jastadd-mquat-solver-emfer/build.gradle +# ADD jastadd-mquat-solver-simple/build.gradle jastadd-mquat-solver-simple/build.gradle +# ADD jastadd-mquat-benchmark/build.gradle jastadd-mquat-benchmark/build.gradle +RUN ./gradlew --no-daemon --stacktrace build; true +RUN ./gradlew --no-daemon --stacktrace dependencies; true +# end optimization: first download + +ADD . . + +USER root +RUN chown user:user -R /ttc18 +USER user + +RUN echo "glpkPath = /usr/lib/x86_64-linux-gnu/jni" > gradle.properties +#RUN sed -i '/jastadd-mquat-solver-emfer/d' settings.gradle +#RUN sed -i '/jastadd-mquat-solver-emfer/d' jastadd-mquat-benchmark/build.gradle +#RUN sed -i '/EMFeRSolver/d' jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/SolverFactory.java +RUN echo "test.enabled = false" > ./jastadd-mquat-solver-emfer/build.gradle +#RUN echo "test.enabled = false" > ./jastadd-mquat-solver-random/build.gradle +RUN sed -i 's/MINUTES/SECONDS/g' jastadd-mquat-benchmark/src/main/resources/scenarios.json + +# then build +RUN ./gradlew --no-daemon assemble +RUN ./gradlew --no-daemon compileTestJava +RUN ./gradlew --no-daemon compileJava + +#RUN ./gradlew test +#RUN ./gradlew benchmarkFull -Pscenario=0,small diff --git a/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/SolverFactory.java b/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/SolverFactory.java index 7e9e463f195a0955810e86a3ef9f5ac806862f0d..180b8aa4fc704d7f710dbf8e89ede1d795cc6a2a 100644 --- a/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/SolverFactory.java +++ b/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/SolverFactory.java @@ -31,7 +31,7 @@ public class SolverFactory { new ILPExternalSolver(), new ILPDirectSolver(), new SimpleSolver(), - new RandomSolver(), + new RandomSolver(0, 0), new GeneticSolver() ).collect(Collectors.toMap(BenchmarkableSolver::getName, Function.identity())); }