diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000000000000000000000000000000000000..7495d3b4bd715b98af8e69351833c23c8cada72e --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,35 @@ +--- + +version: 2 +jobs: + build: + working_directory: ~/src + docker: + - image: hbpmip/docker-compose-for-ci:17.06-0 + environment: + - CIRCLECI: true + steps: + - setup_remote_docker: + version: 17.06.0-ce + - checkout + - run: + name: "Install requirements" + command: | + docker --version + pre-commit install + - run: + name: "Validate code quality" + command: | + pre-commit run --all-files + - run: + name: "Build project" + command: | + PATH=$PATH:/$HOME/.captain/bin/ ./build.sh + - run: + name: "Test project" + command: | + PATH=$PATH:/$HOME/.captain/bin/ ./test.sh + + notify: + webhooks: + - url: 'https://webhook.atomist.com/atomist/circle' diff --git a/Dockerfile b/Dockerfile index fab13fb44a326a76f630640d2199fa62f4bfb86c..f830e1efe25463c8db60341e7bd86a1e60812fc7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,13 @@ +# Build stage for Java classes +FROM hbpmip/java-base-build:3.5.0-jdk-8-6 as java-build-env + +COPY pom.xml /project/ +COPY src/ /project/src/ + +# Repeating the file copy works better. I dunno why. +RUN cp /usr/share/maven/ref/settings-docker.xml /root/.m2/settings.xml \ + && mvn clean package + FROM openjdk:8u131-jre-alpine MAINTAINER Mirco Nasuti <mirco.nasuti@chuv.ch> @@ -13,10 +23,10 @@ RUN apk add --no-cache --update ca-certificates wget \ && tar -C /usr/local/bin -xzvf /tmp/dockerize.tar.gz \ && rm -rf /var/cache/apk/* /tmp/* -COPY docker/runner/config/application.tmpl /config/application.tmpl -COPY docker/runner/README.md docker/runner/run.sh / +COPY docker/config/application.tmpl /config/application.tmpl +COPY docker/README.md docker/run.sh / -COPY target/portal-backend.jar backend.jar +COPY --from=java-build-env /project/target/portal-backend.jar /usr/share/jars/ EXPOSE 8080 diff --git a/Dockerfile.builder b/Dockerfile.builder deleted file mode 100644 index 8297a68b8ffd1eb974b07fda04cf79c32e883ee3..0000000000000000000000000000000000000000 --- a/Dockerfile.builder +++ /dev/null @@ -1,17 +0,0 @@ -# Pull base image -FROM maven:3.5.0-jdk-8-alpine - -MAINTAINER mirco.nasuti@chuv.ch - -# Create a user with id 1000, with some luck it should match your user on the host machine. -RUN adduser --quiet --uid 1000 build -USER build - -COPY ./docker/builder/build-in-docker.sh / - -# Volume -VOLUME /build -# Define working directory -WORKDIR /build - -ENTRYPOINT ["/build-in-docker.sh"] diff --git a/captain.yml b/captain.yml index 20d2f6aa6c6d10b6edb34aab0893f13bf980322c..bc8842887ca1b3effbdaabba3ba9c493cd05815a 100644 --- a/captain.yml +++ b/captain.yml @@ -1,18 +1,4 @@ -# Builder image -# Creates a portable environemnt to build this project. -# Do not push this image to Docker hub. -builder: - build: Dockerfile.builder - image: portal-backend-builder - pre: - - echo "Building portal backend builder image" - post: - - echo "Finished building portal backend builder image" - - echo "Building project..." - - docker run --rm -v $WORKSPACE:/build/ -v $HOME/.m2:/home/build/.m2/ portal-backend-builder:latest - - echo "Finished building project" - -portal-backend: +target_image: build: Dockerfile image: hbpmip/portal-backend pre: diff --git a/circle.yml b/circle.yml deleted file mode 100644 index fcb5a4e3b1c7b95bc30fcc51e68f62e5168207c2..0000000000000000000000000000000000000000 --- a/circle.yml +++ /dev/null @@ -1,26 +0,0 @@ -machine: - services: - - docker -dependencies: - cache_directories: - - "~/.m2" - override: - - docker info - - docker build -f Dockerfile.builder -t portal-backend-builder . - - docker run --rm -v $HOME/portal-backend:/build/ -v $HOME/.m2:/home/build/.m2/ portal-backend-builder:latest - - docker build -t hbpmip/portal-backend . -test: - pre: - - ./tests/pre-test-run.sh - override: - - ./tests/test-run.sh -# deployment: -# hub: -# branch: master -# commands: -# - docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PASS -e $DOCKER_HUB_EMAIL -# - docker push --branch-tags=false --commit-tags=true -# - mvn sonar:sonar -Dsonar.login=$SONAR_KEY # Need SonarQube back on a public URL -notify: - webhooks: - - url: 'https://webhook.atomist.com/atomist/circle' diff --git a/docker/runner/README.md b/docker/README.md similarity index 100% rename from docker/runner/README.md rename to docker/README.md diff --git a/docker/builder/build-in-docker.sh b/docker/builder/build-in-docker.sh deleted file mode 100755 index 62c4795108afaf68fbb1cf0cdf15909e5e147dc6..0000000000000000000000000000000000000000 --- a/docker/builder/build-in-docker.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -echo ">>> Building inside Docker" - -echo "Removing old target folder..." -rm -rf target/ - -echo "Packaging..." -mvn package - -echo ">>> Backend build is complete" diff --git a/docker/runner/config/application.tmpl b/docker/config/application.tmpl similarity index 100% rename from docker/runner/config/application.tmpl rename to docker/config/application.tmpl diff --git a/docker/runner/run.sh b/docker/run.sh similarity index 85% rename from docker/runner/run.sh rename to docker/run.sh index 3654d5cbef1ebb1137dedcf5f5abf00c8958649a..2b1ca22d1c42ceccd4d8d6fe9ac40e363f729a43 100755 --- a/docker/runner/run.sh +++ b/docker/run.sh @@ -10,4 +10,4 @@ fi if [ ! -z "$FEATURES_DB_SERVER" ]; then OPTS="$OPTS -wait tcp://$FEATURES_DB_SERVER -timeout 60s" fi -dockerize $OPTS java -jar backend.jar +dockerize $OPTS java -jar /usr/share/jars/portal-backend.jar