diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..ff05716577d02f5e3706ca0807457d2cb63a0bc1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,62 @@ +.gitlab-ci +Dockerfile +README.md +LICENSE +.dockerignore + +plugin.xml_gen +bin/ +target/ +tmp/ +.settings/ +MANIFEST.MF_gen +.DS_Store* +.metadata +runtimeInfo +workspace +*._trace +Thumbs.db +.Rhistory +.pydevproject +deps/ +diagrams/* +.idea +log/ +catalog-v*.xml +.RData +.Rproj.user +*.tar.gz +*.zip +*.gml + +# IntelliJ IDEA +*.iml + +# Eclipse +.project +.classpath + +### Gradle ### +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +hs_err_*.log +replay_*.log + +~*.* +*.~* + +xtend-gen/ +neo4j-server/ +out/ +*.swp +*.report diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..472ce3accc40c2164d63ce0d06407514826c6cad --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,72 @@ +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/trainbenchmark:latest + CONTAINER_TEST_IMAGE: $DOCKER_REPOSITORY/stgroup/trainbenchmark:$CI_COMMIT_REF_NAME + + +stages: + - build + - test + - benchmark + - 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_test: + stage: test + tags: + - dockered + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker run $CONTAINER_TEST_IMAGE /trainbenchmark/gradlew --no-daemon test + +test_check: + stage: test + tags: + - dockered + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker run $CONTAINER_TEST_IMAGE /trainbenchmark/gradlew --no-daemon check + +benchmark_inject: + stage: benchmark + tags: + - dockered + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker run $CONTAINER_TEST_IMAGE /trainbenchmark/gradlew --no-daemon individualInjectBenchmark + +benchmark_repair: + stage: benchmark + tags: + - dockered + script: + - docker pull $CONTAINER_TEST_IMAGE + - docker run $CONTAINER_TEST_IMAGE /trainbenchmark/gradlew --no-daemon individualRepairBenchmark + + + +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..f5bda94994e27bc1754d224cac0d6ded911469c3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,124 @@ +# 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 + +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update -y && apt-get install -y \ + openjdk-8-jdk \ + r-base \ + r-base-dev \ + libudunits2-dev \ + --no-install-recommends \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir -p /trainbenchmark/trainbenchmark-reporting +COPY trainbenchmark-reporting/install.R /trainbenchmark/trainbenchmark-reporting/install.R +RUN Rscript /trainbenchmark/trainbenchmark-reporting/install.R + +ENV HOME /home/user +RUN useradd --create-home --home-dir $HOME user \ + && chmod -R u+rwx $HOME \ + && chown -R user:user $HOME + +WORKDIR /trainbenchmark +# START prefetch some gradle-dependencies +COPY gradlew . +COPY gradle gradle +COPY settings.gradle . +COPY build.gradle build.gradle +RUN chown user:user -R /trainbenchmark +USER user + +RUN ./gradlew --no-daemon build; true + +# build.gradle +COPY trainbenchmark-reporting/build.gradle trainbenchmark-reporting/build.gradle +COPY trainbenchmark-scripts/build.gradle trainbenchmark-scripts/build.gradle +COPY trainbenchmark-server/build.gradle trainbenchmark-server/build.gradle +COPY trainbenchmark-tool-emf/build.gradle trainbenchmark-tool-emf/build.gradle +COPY trainbenchmark-tool-jastadd-namelookup-base/build.gradle trainbenchmark-tool-jastadd-namelookup-base/build.gradle +COPY trainbenchmark-tool-jastadd-namelookup-incremental/build.gradle trainbenchmark-tool-jastadd-namelookup-incremental/build.gradle +COPY trainbenchmark-tool-jastadd-namelookup/build.gradle trainbenchmark-tool-jastadd-namelookup/build.gradle +COPY trainbenchmark-tool-jastadd-optimized-base/build.gradle trainbenchmark-tool-jastadd-optimized-base/build.gradle +COPY trainbenchmark-tool-jastadd-optimized-incremental/build.gradle trainbenchmark-tool-jastadd-optimized-incremental/build.gradle +COPY trainbenchmark-tool-jastadd-optimized/build.gradle trainbenchmark-tool-jastadd-optimized/build.gradle +COPY trainbenchmark-tool-jastadd-specialized-base/build.gradle trainbenchmark-tool-jastadd-specialized-base/build.gradle +COPY trainbenchmark-tool-jastadd-specialized-incremental/build.gradle trainbenchmark-tool-jastadd-specialized-incremental/build.gradle +COPY trainbenchmark-tool-jastadd-specialized/build.gradle trainbenchmark-tool-jastadd-specialized/build.gradle +COPY trainbenchmark-tool-tinkergraph/build.gradle trainbenchmark-tool-tinkergraph/build.gradle +COPY trainbenchmark-tool-viatra-patterns/build.gradle trainbenchmark-tool-viatra-patterns/build.gradle +COPY trainbenchmark-tool-viatra/build.gradle trainbenchmark-tool-viatra/build.gradle +# properties +COPY trainbenchmark-format-emf-model/build.properties trainbenchmark-format-emf-model/build.properties +COPY trainbenchmark-tool-viatra-patterns/build.properties trainbenchmark-tool-viatra-patterns/build.properties +COPY trainbenchmark-tool/build.properties trainbenchmark-tool/build.properties +# core packages +COPY trainbenchmark-config/ trainbenchmark-config/ +COPY trainbenchmark-tool/ trainbenchmark-tool/ +COPY trainbenchmark-tool-jastadd-base/ trainbenchmark-tool-jastadd-base/ +COPY trainbenchmark-format-emf-model/ trainbenchmark-format-emf-model/ +COPY trainbenchmark-format-emf/ trainbenchmark-format-emf/ +COPY trainbenchmark-generator-dot/ trainbenchmark-generator-dot/ +COPY trainbenchmark-generator-emf/ trainbenchmark-generator-emf/ +COPY trainbenchmark-generator-graph-tinkerpop/ trainbenchmark-generator-graph-tinkerpop/ +COPY trainbenchmark-generator-json4ag-special/ trainbenchmark-generator-json4ag-special/ +COPY trainbenchmark-generator-json4ag/ trainbenchmark-generator-json4ag/ +COPY trainbenchmark-generator/ trainbenchmark-generator/ + +RUN ./gradlew --no-daemon initScripts +RUN ./gradlew --no-daemon generate; true +RUN ./gradlew --no-daemon dependencies; true +RUN ./gradlew --no-daemon trainbenchmark-config:build; true +RUN ./gradlew --no-daemon trainbenchmark-tool-jastadd-base:build; true + +# END prefetch some gradle-dependencies + +COPY diagrams/ diagrams/ +COPY logs/ logs/ +COPY models/ models/ +COPY results/ results/ +COPY trainbenchmark-config/ trainbenchmark-config/ +COPY trainbenchmark-format-emf/ trainbenchmark-format-emf/ +COPY trainbenchmark-format-emf-model/ trainbenchmark-format-emf-model/ +COPY trainbenchmark-generator/ trainbenchmark-generator/ +COPY trainbenchmark-generator-dot/ trainbenchmark-generator-dot/ +COPY trainbenchmark-generator-emf/ trainbenchmark-generator-emf/ +COPY trainbenchmark-generator-graph-tinkerpop/ trainbenchmark-generator-graph-tinkerpop/ +COPY trainbenchmark-generator-json4ag/ trainbenchmark-generator-json4ag/ +COPY trainbenchmark-generator-json4ag-special/ trainbenchmark-generator-json4ag-special/ +COPY trainbenchmark-reporting/ trainbenchmark-reporting/ +COPY trainbenchmark-scripts/ trainbenchmark-scripts/ +COPY trainbenchmark-server/ trainbenchmark-server/ +COPY trainbenchmark-tool/ trainbenchmark-tool/ +COPY trainbenchmark-tool-emf/ trainbenchmark-tool-emf/ +COPY trainbenchmark-tool-jastadd-base/ trainbenchmark-tool-jastadd-base/ +COPY trainbenchmark-tool-jastadd-namelookup/ trainbenchmark-tool-jastadd-namelookup/ +COPY trainbenchmark-tool-jastadd-namelookup-base/ trainbenchmark-tool-jastadd-namelookup-base/ +COPY trainbenchmark-tool-jastadd-namelookup-incremental/ trainbenchmark-tool-jastadd-namelookup-incremental/ +COPY trainbenchmark-tool-jastadd-optimized/ trainbenchmark-tool-jastadd-optimized/ +COPY trainbenchmark-tool-jastadd-optimized-base/ trainbenchmark-tool-jastadd-optimized-base/ +COPY trainbenchmark-tool-jastadd-optimized-incremental/ trainbenchmark-tool-jastadd-optimized-incremental/ +COPY trainbenchmark-tool-jastadd-specialized/ trainbenchmark-tool-jastadd-specialized/ +COPY trainbenchmark-tool-jastadd-specialized-base/ trainbenchmark-tool-jastadd-specialized-base/ +COPY trainbenchmark-tool-jastadd-specialized-incremental/ trainbenchmark-tool-jastadd-specialized-incremental/ +COPY trainbenchmark-tool-tinkergraph/ trainbenchmark-tool-tinkergraph/ +COPY trainbenchmark-tool-viatra/ trainbenchmark-tool-viatra/ +COPY trainbenchmark-tool-viatra-patterns/ trainbenchmark-tool-viatra-patterns/ +COPY visualization/ visualization/ + + +USER root +RUN chown -R user:user /trainbenchmark +USER user + +RUN ./gradlew --no-daemon initScripts +RUN ./gradlew --no-daemon build shadowJar -x test +RUN ./gradlew --no-daemon generate + +# RUN ./gradlew --no-daemon individualInjectBenchmark +# RUN ./gradlew --no-daemon individualRepairBenchmark +