From 1e041558bc706792eed1ff3948eb79519c233111 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Wed, 21 Oct 2020 04:53:02 +0300 Subject: [PATCH 1/9] Using Docker Maven Plugin to extract tarball from builder container --- app/pom.xml | 44 ++++++++++++++++++++++---------------------- pom.xml | 5 ----- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/app/pom.xml b/app/pom.xml index 4179f7a..303fe80 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -26,35 +26,35 @@ - - org.apache.maven.plugins - maven-antrun-plugin + io.fabric8 + docker-maven-plugin copy-from-image generate-resources - run + start + stop - - - - - - - - + Never + false + + + ${builder.image.repository}:${project.version} + + %n-%t + true + + 0 + + + %z + ${artifact.file} + + + + diff --git a/pom.xml b/pom.xml index 4996eea..ce60939 100644 --- a/pom.xml +++ b/pom.xml @@ -86,11 +86,6 @@ build-helper-maven-plugin 3.2.0 - - org.apache.maven.plugins - maven-antrun-plugin - 3.0.0 - org.apache.maven.plugins maven-dependency-plugin From adebd3011112cdf7164c9fae4e51c292defea247 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Sun, 25 Oct 2020 00:11:58 +0300 Subject: [PATCH 2/9] Usage of copy goal of Maven Docker Plugin --- app/pom.xml | 26 ++++++++++---------------- pom.xml | 5 +++-- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/app/pom.xml b/app/pom.xml index 303fe80..f9d2deb 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -12,7 +12,7 @@ pom - ${project.build.directory}/app.tar.gz + ${project.build.directory}/${builder.output.fileName} @@ -33,26 +33,20 @@ copy-from-image generate-resources - start - stop + copy - Never - false ${builder.image.repository}:${project.version} - - %n-%t - true - - 0 - - - %z - ${artifact.file} - - + + + + ${builder.output.file} + ${project.build.directory} + + + diff --git a/pom.xml b/pom.xml index ce60939..20dac8e 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,8 @@ 1.74.0 8211e639fd443cbffed7891af9c54012848d04df340ee993bedb3ef0346347c3 abrarov/maven-docker-builder-builder - /out.tar.gz + out.tar.gz + /${builder.output.fileName} @@ -124,7 +125,7 @@ io.fabric8 docker-maven-plugin - 0.33.0 + 0.34-SNAPSHOT From 7a5a020abf8601c16c1f73355f21274cc15ac5eb Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Thu, 5 Nov 2020 17:11:34 +0300 Subject: [PATCH 3/9] Updated to match changes in copy goal of Docker Maven Plugin --- app/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/pom.xml b/app/pom.xml index f9d2deb..152d6c4 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -49,6 +49,7 @@ + true From d29393a9623a5d806a89921542d5d94ca1602b1b Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Fri, 6 Nov 2020 05:17:17 +0300 Subject: [PATCH 4/9] Optimization of builder image --- builder-image/src/main/resources/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/builder-image/src/main/resources/Dockerfile b/builder-image/src/main/resources/Dockerfile index ae01d43..02f0055 100644 --- a/builder-image/src/main/resources/Dockerfile +++ b/builder-image/src/main/resources/Dockerfile @@ -38,7 +38,8 @@ RUN revision="@app.version@" && \ mkdir -p "$(dirname "${output_file}")" && \ tar -C "${build_dir}/examples/ma_echo_server" -czf "${output_file}" ma_echo_server && \ rm -rf "${build_dir}" && \ - rm -rf "${source_dir}" + rm -rf "${source_dir}" && \ + echo "Built binaries location: ${output_file}" CMD ["/usr/bin/cat", "@output.file@"] From 77c88f7c487d4ca8303d74fe69a1d9664ccb1bb8 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Fri, 6 Nov 2020 10:25:18 +0300 Subject: [PATCH 5/9] Reproducible artifact produced by builder image. --- builder-image/src/main/resources/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/builder-image/src/main/resources/Dockerfile b/builder-image/src/main/resources/Dockerfile index 02f0055..e7bf005 100644 --- a/builder-image/src/main/resources/Dockerfile +++ b/builder-image/src/main/resources/Dockerfile @@ -36,7 +36,8 @@ RUN revision="@app.version@" && \ -B "${build_dir}" && \ cmake --build "${build_dir}" --target ma_echo_server && \ mkdir -p "$(dirname "${output_file}")" && \ - tar -C "${build_dir}/examples/ma_echo_server" -czf "${output_file}" ma_echo_server && \ + tar --sort=name --owner=0:0 --group=0:0 --mtime='UTC 1970-01-01' \ + -C "${build_dir}/examples/ma_echo_server" -czf "${output_file}" ma_echo_server && \ rm -rf "${build_dir}" && \ rm -rf "${source_dir}" && \ echo "Built binaries location: ${output_file}" From ed55262c758589d69c0f91a294569763cdc08e7d Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Tue, 10 Nov 2020 08:57:24 +0300 Subject: [PATCH 6/9] Adopted Travis CI for custom version of docker-maven-plugin --- .travis.yml | 1 + travis/build-and-test.sh | 25 ++++++++++++++++++------- travis/settings.xml | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 travis/settings.xml diff --git a/.travis.yml b/.travis.yml index 1707f57..fdc7d58 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ env: - DOCKERHUB_USER: 'abrarov' - MAVEN_WRAPPER: '0' - DOCKER_PUSH_RETRIES: '10' + - DOCKER_MAVEN_PLUGIN_VERSION: '0.34-dev' matrix: include: diff --git a/travis/build-and-test.sh b/travis/build-and-test.sh index 3cdce1b..ef66a72 100755 --- a/travis/build-and-test.sh +++ b/travis/build-and-test.sh @@ -17,6 +17,10 @@ build_maven_project() { build_cmd="${build_cmd:+${build_cmd} }--file $(printf "%q" "${TRAVIS_BUILD_DIR}/pom.xml")" build_cmd="${build_cmd:+${build_cmd} }--batch-mode" + if [[ "${DOCKER_MAVEN_PLUGIN_VERSION}" != "" ]]; then + build_cmd="${build_cmd:+${build_cmd} }--define docker-maven-plugin.version=$(printf "%q" "${DOCKER_MAVEN_PLUGIN_VERSION}")" + fi + if [[ "${DOCKERHUB_USER}" != "" ]]; then build_cmd="${build_cmd:+${build_cmd} }--define docker.image.registry=$(printf "%q" "${DOCKERHUB_USER}")" fi @@ -50,13 +54,20 @@ build_maven_project() { } test_images() { - maven_project_version="$(mvn \ - --file "${TRAVIS_BUILD_DIR}/pom.xml" \ - --batch-mode \ - --non-recursive \ - --define expression=project.version \ - org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \ - | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }')" + if [[ "${MAVEN_WRAPPER}" -ne 0 ]]; then + project_version_cmd="${project_version_cmd:+${project_version_cmd} }$(printf "%q" "${TRAVIS_BUILD_DIR}/mvnw")" + else + project_version_cmd="${project_version_cmd:+${project_version_cmd} }mvn" + fi + maven_settings_file="${TRAVIS_BUILD_DIR}/travis/settings.xml" + if [[ -f "${maven_settings_file}" ]]; then + project_version_cmd="${project_version_cmd:+${project_version_cmd} }--settings $(printf "%q" "${maven_settings_file}")" + fi + project_version_cmd="${project_version_cmd:+${project_version_cmd} }--file $(printf "%q" "${TRAVIS_BUILD_DIR}/pom.xml")" + project_version_cmd="${project_version_cmd:+${project_version_cmd} }--batch-mode --non-recursive" + project_version_cmd="${project_version_cmd:+${project_version_cmd} }--define expression=project.version" + project_version_cmd="${project_version_cmd:+${project_version_cmd} }org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate" + maven_project_version="$(eval "${project_version_cmd}" | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }')" image_name="${DOCKERHUB_USER}/maven-docker-builder-app:${maven_project_version}" echo "Running container created from ${image_name} image" diff --git a/travis/settings.xml b/travis/settings.xml new file mode 100644 index 0000000..17846e6 --- /dev/null +++ b/travis/settings.xml @@ -0,0 +1,32 @@ + + + + + + + + false + + bintray-mabrarov-maven + bintray + https://dl.bintray.com/mabrarov/maven + + + + + + false + + bintray-mabrarov-maven + bintray-plugins + https://dl.bintray.com/mabrarov/maven + + + bintray + + + + bintray + + From 46b9bec4ab0d7ab65211f1fe8aa937d1f114f3d4 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Tue, 10 Nov 2020 09:10:42 +0300 Subject: [PATCH 7/9] Enhancement of Travis CI test script --- travis/build-and-test.sh | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/travis/build-and-test.sh b/travis/build-and-test.sh index 3cdce1b..fbbd3df 100755 --- a/travis/build-and-test.sh +++ b/travis/build-and-test.sh @@ -50,13 +50,20 @@ build_maven_project() { } test_images() { - maven_project_version="$(mvn \ - --file "${TRAVIS_BUILD_DIR}/pom.xml" \ - --batch-mode \ - --non-recursive \ - --define expression=project.version \ - org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \ - | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }')" + if [[ "${MAVEN_WRAPPER}" -ne 0 ]]; then + project_version_cmd="${project_version_cmd:+${project_version_cmd} }$(printf "%q" "${TRAVIS_BUILD_DIR}/mvnw")" + else + project_version_cmd="${project_version_cmd:+${project_version_cmd} }mvn" + fi + maven_settings_file="${TRAVIS_BUILD_DIR}/travis/settings.xml" + if [[ -f "${maven_settings_file}" ]]; then + project_version_cmd="${project_version_cmd:+${project_version_cmd} }--settings $(printf "%q" "${maven_settings_file}")" + fi + project_version_cmd="${project_version_cmd:+${project_version_cmd} }--file $(printf "%q" "${TRAVIS_BUILD_DIR}/pom.xml")" + project_version_cmd="${project_version_cmd:+${project_version_cmd} }--batch-mode --non-recursive" + project_version_cmd="${project_version_cmd:+${project_version_cmd} }--define expression=project.version" + project_version_cmd="${project_version_cmd:+${project_version_cmd} }org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate" + maven_project_version="$(eval "${project_version_cmd}" | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }')" image_name="${DOCKERHUB_USER}/maven-docker-builder-app:${maven_project_version}" echo "Running container created from ${image_name} image" From de1761901db524fc40073e82befa51b2e86cfbda Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Tue, 10 Nov 2020 09:54:04 +0300 Subject: [PATCH 8/9] Optimization of Travis CI test script --- travis/build-and-test.sh | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/travis/build-and-test.sh b/travis/build-and-test.sh index ef66a72..f164226 100755 --- a/travis/build-and-test.sh +++ b/travis/build-and-test.sh @@ -2,18 +2,23 @@ set -e -build_maven_project() { +maven_runner() { if [[ "${MAVEN_WRAPPER}" -ne 0 ]]; then - build_cmd="${build_cmd:+${build_cmd} }$(printf "%q" "${TRAVIS_BUILD_DIR}/mvnw")" + printf "%q" "${TRAVIS_BUILD_DIR}/mvnw" else - build_cmd="${build_cmd:+${build_cmd} }mvn" + echo "mvn" fi +} +maven_settings() { maven_settings_file="${TRAVIS_BUILD_DIR}/travis/settings.xml" if [[ -f "${maven_settings_file}" ]]; then - build_cmd="${build_cmd:+${build_cmd} }--settings $(printf "%q" "${maven_settings_file}")" + printf " %s %q" "--settings" "${maven_settings_file}" fi +} +build_maven_project() { + build_cmd="$(maven_runner)$(maven_settings)" build_cmd="${build_cmd:+${build_cmd} }--file $(printf "%q" "${TRAVIS_BUILD_DIR}/pom.xml")" build_cmd="${build_cmd:+${build_cmd} }--batch-mode" @@ -54,15 +59,7 @@ build_maven_project() { } test_images() { - if [[ "${MAVEN_WRAPPER}" -ne 0 ]]; then - project_version_cmd="${project_version_cmd:+${project_version_cmd} }$(printf "%q" "${TRAVIS_BUILD_DIR}/mvnw")" - else - project_version_cmd="${project_version_cmd:+${project_version_cmd} }mvn" - fi - maven_settings_file="${TRAVIS_BUILD_DIR}/travis/settings.xml" - if [[ -f "${maven_settings_file}" ]]; then - project_version_cmd="${project_version_cmd:+${project_version_cmd} }--settings $(printf "%q" "${maven_settings_file}")" - fi + project_version_cmd="$(maven_runner)$(maven_settings)" project_version_cmd="${project_version_cmd:+${project_version_cmd} }--file $(printf "%q" "${TRAVIS_BUILD_DIR}/pom.xml")" project_version_cmd="${project_version_cmd:+${project_version_cmd} }--batch-mode --non-recursive" project_version_cmd="${project_version_cmd:+${project_version_cmd} }--define expression=project.version" From 56a9eaeb79f6bc197607dc424d92186ec87140c2 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Tue, 10 Nov 2020 10:17:40 +0300 Subject: [PATCH 9/9] Optimization of Travis CI test script --- travis/build-and-test.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/travis/build-and-test.sh b/travis/build-and-test.sh index 067737f..ad5e2ee 100755 --- a/travis/build-and-test.sh +++ b/travis/build-and-test.sh @@ -25,6 +25,10 @@ build_maven_project() { build_cmd="$(maven_runner)$(maven_settings)$(maven_project_file)" build_cmd="${build_cmd:+${build_cmd} }--batch-mode" + if [[ "${DOCKER_MAVEN_PLUGIN_VERSION}" != "" ]]; then + build_cmd="${build_cmd:+${build_cmd} }--define docker-maven-plugin.version=$(printf "%q" "${DOCKER_MAVEN_PLUGIN_VERSION}")" + fi + if [[ "${DOCKERHUB_USER}" != "" ]]; then build_cmd="${build_cmd:+${build_cmd} }--define docker.image.registry=$(printf "%q" "${DOCKERHUB_USER}")" fi