From 933941dd13c3e0bccff8113acada93f462f151bd Mon Sep 17 00:00:00 2001 From: Thomas Bouron Date: Wed, 4 Dec 2019 19:27:40 +0000 Subject: [PATCH 1/3] Using the io.fabric8:docker-maven-plugin to build Brooklyn docker image. This follows the setup done by Apache Syncope. Theoretically, it should use the credentials stored in Apache Jenkins, so it can be pushed to Docker hub / Apache / Brooklyn automatically when `mvn deploy` is executed --- docker-image/pom.xml | 177 +++++++++++------- .../{ => src/main/resources}/Dockerfile | 9 +- 2 files changed, 117 insertions(+), 69 deletions(-) rename docker-image/{ => src/main/resources}/Dockerfile (88%) diff --git a/docker-image/pom.xml b/docker-image/pom.xml index d67363b482..085eb61f38 100755 --- a/docker-image/pom.xml +++ b/docker-image/pom.xml @@ -20,75 +20,122 @@ - 4.0.0 + 4.0.0 - karaf-docker-image - pom - Brooklyn Docker Image + karaf-docker-image + pom + Brooklyn Docker Image - - org.apache.brooklyn - brooklyn-dist-root - 1.1.0-SNAPSHOT - ../pom.xml - + + org.apache.brooklyn + brooklyn-dist-root + 1.1.0-SNAPSHOT + ../pom.xml + - - - org.apache.brooklyn - apache-brooklyn - ${project.version} - tar.gz - - + + + org.apache.brooklyn + apache-brooklyn + ${project.version} + tar.gz + + - - - - maven-dependency-plugin - - - copy-distro - prepare-package - - copy - - - - - org.apache.brooklyn - apache-brooklyn - tar.gz - ${project.build.directory} - apache-brooklyn-${project.version}.tar.gz - - - - - - - - com.spotify - dockerfile-maven-plugin - ${dockerfile-maven-plugin.version} - - - default - - build - - - - - apache/brooklyn - ${project.version} - - target/apache-brooklyn-${project.version}.tar.gz - - - - - + + + + src/main/resources + + + + + + maven-dependency-plugin + + + copy-distro + prepare-package + + copy + + + + + org.apache.brooklyn + apache-brooklyn + tar.gz + ${project.build.outputDirectory} + apache-brooklyn-${project.version}.tar.gz + + + + + + + + io.fabric8 + docker-maven-plugin + + true + + + apache/brooklyn:%v + + + apache-brooklyn-${project.version}.tar.gz + + ${project.build.outputDirectory} + + + + + + + cleanup + initialize + + remove + + + + build + package + + build + + + + + + org.apache.maven.plugins + maven-resources-plugin + + + process-resources + + resources + + + + + + org.apache.maven.plugins + maven-source-plugin + false + + true + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + diff --git a/docker-image/Dockerfile b/docker-image/src/main/resources/Dockerfile similarity index 88% rename from docker-image/Dockerfile rename to docker-image/src/main/resources/Dockerfile index b4a2c249e9..d906fa3da3 100644 --- a/docker-image/Dockerfile +++ b/docker-image/src/main/resources/Dockerfile @@ -19,15 +19,16 @@ FROM openjdk:8-jre-alpine LABEL maintainer="Brooklyn Team :: https://brooklyn.apache.org/" -EXPOSE 8081 8443 ARG DIST_TAR_GZ COPY ${DIST_TAR_GZ} brooklyn.tar.gz ENV EXTRA_JAVA_OPTS="-XX:SoftRefLRUPolicyMSPerMB=1 -Djava.security.egd=file:/dev/./urandom" RUN apk --no-cache add bash ; \ - mkdir brooklyn ; \ - tar xzf brooklyn.tar.gz -C /brooklyn --strip-components 1 ; + mkdir -p /opt/brooklyn ; \ + tar xzf brooklyn.tar.gz -C /opt/brooklyn --strip-components 1 ; -ENTRYPOINT ["/brooklyn/bin/karaf"] +ENTRYPOINT ["/opt/brooklyn/bin/karaf"] CMD ["server"] + +EXPOSE 8081 8443 From 333e896efe8391ad418550edcbc765901e68d039 Mon Sep 17 00:00:00 2001 From: Thomas Bouron Date: Wed, 4 Dec 2019 19:29:17 +0000 Subject: [PATCH 2/3] Mount the docker socket so the Brooklyn docker image can be build on Jenkins --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index fc02069775..70f84614eb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -44,8 +44,8 @@ node(label: 'ubuntu') { } stage('Run tests') { - environmentDockerImage.inside('-i --name brooklyn-${DOCKER_TAG} -v ${WORKSPACE}/.m2:/var/maven/.m2 --mount type=bind,source="${HOME}/.m2/settings.xml",target=/var/maven/.m2/settings.xml,readonly -v ${WORKSPACE}:/usr/build -w /usr/build') { - sh 'mvn clean install -Prpm -Pdeb -Duser.home=/var/maven -Duser.name=jenkins' + environmentDockerImage.inside('-i --name brooklyn-${DOCKER_TAG} -v ${WORKSPACE}/.m2:/var/maven/.m2 --mount type=bind,source="${HOME}/.m2/settings.xml",target=/var/maven/.m2/settings.xml,readonly -v /var/run/docker.sock:/var/run/docker.sock -v ${WORKSPACE}:/usr/build -w /usr/build') { + sh 'mvn clean install -Prpm -Pdeb -Pdocker -Duser.home=/var/maven -Duser.name=jenkins' } } } From f2a62149770de753fbdd58db713ee94f0d6ca0bd Mon Sep 17 00:00:00 2001 From: Thomas Bouron Date: Fri, 10 Jan 2020 14:47:21 +0000 Subject: [PATCH 3/3] Add docker binary to the docker container that is going to build the docker image --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ca7afefabb..0f0af3793f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,7 @@ FROM maven:3.5.2-jdk-8-alpine # Install necessary binaries to build brooklyn-dist -RUN apk add --no-cache git rpm dpkg +RUN apk add --no-cache git rpm dpkg docker # Make sure the /var/tmp (for RPM build) is writable for all users RUN mkdir -p /var/tmp/ && chmod -R 777 /var/tmp/