Skip to content

Commit 438282b

Browse files
committed
Travis CI
1 parent 7ed447a commit 438282b

File tree

6 files changed

+140
-14
lines changed

6 files changed

+140
-14
lines changed

.travis.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
language: 'java'
2+
3+
cache:
4+
directories:
5+
- '${HOME}/.m2/repository'
6+
7+
services:
8+
- 'docker'
9+
10+
env:
11+
global:
12+
- APP_VERSION: 'master'
13+
- CMAKE_VERSION: '3.18.4'
14+
- CMAKE_SHA256: '149e0cee002e59e0bb84543cf3cb099f108c08390392605e944daeb6594cbc29'
15+
- BOOST_VERSION: '1.74.0'
16+
- BOOST_SHA256: '8211e639fd443cbffed7891af9c54012848d04df340ee993bedb3ef0346347c3'
17+
- DOCKERHUB_USER: 'abrarov'
18+
- MAVEN_WRAPPER: '0'
19+
- DOCKER_PUSH_RETRIES: '10'
20+
21+
matrix:
22+
include:
23+
# OpenJDK 8
24+
- dist: 'trusty'
25+
jdk: 'openjdk8'
26+
# OpenJDK 8 with Maven Wrapper
27+
- dist: 'trusty'
28+
jdk: 'openjdk8'
29+
env:
30+
- MAVEN_WRAPPER: '1'
31+
# OpenJDK 11 with Maven Wrapper
32+
- dist: 'bionic'
33+
jdk: 'openjdk11'
34+
35+
install: 'skip'
36+
37+
script: 'bash travis/build-and-test.sh'

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# Maven Docker Builder
22

3-
Docker builder pattern with Apache Maven.
3+
[![License](https://img.shields.io/github/license/mabrarov/maven-docker-builder)](https://github.com/mabrarov/maven-docker-builder/tree/master/LICENSE)
4+
[![Travis CI build status](https://travis-ci.com/mabrarov/maven-docker-builder.svg?branch=master)](https://travis-ci.com/github/mabrarov/maven-docker-builder)
5+
6+
Docker [builder pattern](https://docs.docker.com/develop/develop-images/multistage-build/) implemented with Apache Maven.
47

58
## Building
69

app-image/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<packaging>pom</packaging>
1313

1414
<properties>
15-
<docker.repository>abrarov/maven-docker-builder-app</docker.repository>
15+
<docker.repository>${docker.image.registry}/maven-docker-builder-app</docker.repository>
1616
</properties>
1717

1818
<dependencies>

builder-image/src/main/resources/Dockerfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ RUN revision="@app.version@" && \
3636
-B "${build_dir}" && \
3737
cmake --build "${build_dir}" --target ma_echo_server && \
3838
mkdir -p "$(dirname "${output_file}")" && \
39-
tar -C "${build_dir}/examples/ma_echo_server" -czf "${output_file}" ma_echo_server && \
39+
tar --sort=name --owner=0:0 --group=0:0 --mtime='UTC 1970-01-01' \
40+
-C "${build_dir}/examples/ma_echo_server" -czf "${output_file}" ma_echo_server && \
4041
rm -rf "${build_dir}" && \
41-
rm -rf "${source_dir}"
42+
rm -rf "${source_dir}" && \
43+
echo "Built binaries location: ${output_file}"
4244

4345
CMD ["/usr/bin/cat", "@output.file@"]
4446

pom.xml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@
1818
</modules>
1919

2020
<properties>
21+
<maven-enforcer-plugin.version>3.0.0-M3</maven-enforcer-plugin.version>
22+
<git-commit-id-plugin.version>4.0.2</git-commit-id-plugin.version>
23+
<build-helper-maven-plugin.version>3.2.0</build-helper-maven-plugin.version>
24+
<maven-antrun-plugin.version>3.0.0</maven-antrun-plugin.version>
25+
<maven-dependency-plugin.version>3.1.2</maven-dependency-plugin.version>
26+
<maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
27+
<download-maven-plugin.version>1.6.0</download-maven-plugin.version>
28+
<maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
29+
<docker-maven-plugin.version>0.34.1</docker-maven-plugin.version>
30+
2131
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2232
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
2333
<resource.delimiter>@</resource.delimiter>
@@ -28,12 +38,15 @@
2838
<maven.compiler.target>1.8</maven.compiler.target>
2939
<docker.verbose>true</docker.verbose>
3040
<docker.cleanup>none</docker.cleanup>
41+
3142
<app.version>master</app.version>
3243
<cmake.version>3.18.4</cmake.version>
3344
<cmake.sha256>149e0cee002e59e0bb84543cf3cb099f108c08390392605e944daeb6594cbc29</cmake.sha256>
3445
<boost.version>1.74.0</boost.version>
3546
<boost.sha256>8211e639fd443cbffed7891af9c54012848d04df340ee993bedb3ef0346347c3</boost.sha256>
36-
<builder.image.repository>abrarov/maven-docker-builder-builder</builder.image.repository>
47+
48+
<docker.image.registry>abrarov</docker.image.registry>
49+
<builder.image.repository>${docker.image.registry}/maven-docker-builder-builder</builder.image.repository>
3750
<builder.output.file>/out.tar.gz</builder.output.file>
3851
</properties>
3952

@@ -60,12 +73,12 @@
6073
<plugin>
6174
<groupId>org.apache.maven.plugins</groupId>
6275
<artifactId>maven-enforcer-plugin</artifactId>
63-
<version>3.0.0-M3</version>
76+
<version>${maven-enforcer-plugin.version}</version>
6477
</plugin>
6578
<plugin>
6679
<groupId>pl.project13.maven</groupId>
6780
<artifactId>git-commit-id-plugin</artifactId>
68-
<version>4.0.2</version>
81+
<version>${git-commit-id-plugin.version}</version>
6982
<configuration>
7083
<verbose>false</verbose>
7184
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
@@ -84,22 +97,22 @@
8497
<plugin>
8598
<groupId>org.codehaus.mojo</groupId>
8699
<artifactId>build-helper-maven-plugin</artifactId>
87-
<version>3.2.0</version>
100+
<version>${build-helper-maven-plugin.version}</version>
88101
</plugin>
89102
<plugin>
90103
<groupId>org.apache.maven.plugins</groupId>
91104
<artifactId>maven-antrun-plugin</artifactId>
92-
<version>3.0.0</version>
105+
<version>${maven-antrun-plugin.version}</version>
93106
</plugin>
94107
<plugin>
95108
<groupId>org.apache.maven.plugins</groupId>
96109
<artifactId>maven-dependency-plugin</artifactId>
97-
<version>3.1.2</version>
110+
<version>${maven-dependency-plugin.version}</version>
98111
</plugin>
99112
<plugin>
100113
<groupId>org.apache.maven.plugins</groupId>
101114
<artifactId>maven-resources-plugin</artifactId>
102-
<version>3.1.0</version>
115+
<version>${maven-resources-plugin.version}</version>
103116
<configuration>
104117
<delimiters>
105118
<delimiter>${resource.delimiter}</delimiter>
@@ -110,12 +123,12 @@
110123
<plugin>
111124
<groupId>com.googlecode.maven-download-plugin</groupId>
112125
<artifactId>download-maven-plugin</artifactId>
113-
<version>1.6.0</version>
126+
<version>${download-maven-plugin.version}</version>
114127
</plugin>
115128
<plugin>
116129
<groupId>org.apache.maven.plugins</groupId>
117130
<artifactId>maven-assembly-plugin</artifactId>
118-
<version>3.3.0</version>
131+
<version>${maven-assembly-plugin.version}</version>
119132
<configuration>
120133
<delimiters>
121134
<delimiter>${resource.delimiter}</delimiter>
@@ -129,7 +142,7 @@
129142
<plugin>
130143
<groupId>io.fabric8</groupId>
131144
<artifactId>docker-maven-plugin</artifactId>
132-
<version>0.33.0</version>
145+
<version>${docker-maven-plugin.version}</version>
133146
</plugin>
134147
</plugins>
135148
</pluginManagement>

travis/build-and-test.sh

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
build_maven_project() {
6+
if [[ "${MAVEN_WRAPPER}" -ne 0 ]]; then
7+
build_cmd="${build_cmd:+${build_cmd} }$(printf "%q" "${TRAVIS_BUILD_DIR}/mvnw")"
8+
else
9+
build_cmd="${build_cmd:+${build_cmd} }mvn"
10+
fi
11+
12+
maven_settings_file="${TRAVIS_BUILD_DIR}/travis/settings.xml"
13+
if [[ -f "${maven_settings_file}" ]]; then
14+
build_cmd="${build_cmd:+${build_cmd} }--settings $(printf "%q" "${maven_settings_file}")"
15+
fi
16+
17+
build_cmd="${build_cmd:+${build_cmd} }--file $(printf "%q" "${TRAVIS_BUILD_DIR}/pom.xml")"
18+
build_cmd="${build_cmd:+${build_cmd} }--batch-mode"
19+
20+
if [[ "${DOCKERHUB_USER}" != "" ]]; then
21+
build_cmd="${build_cmd:+${build_cmd} }--define docker.image.registry=$(printf "%q" "${DOCKERHUB_USER}")"
22+
fi
23+
24+
if [[ "${APP_VERSION}" != "" ]]; then
25+
build_cmd="${build_cmd:+${build_cmd} }--define app.version=$(printf "%q" "${APP_VERSION}")"
26+
fi
27+
28+
if [[ "${CMAKE_VERSION}" != "" ]]; then
29+
build_cmd="${build_cmd:+${build_cmd} }--define cmake.version=$(printf "%q" "${CMAKE_VERSION}")"
30+
fi
31+
32+
if [[ "${CMAKE_SHA256}" != "" ]]; then
33+
build_cmd="${build_cmd:+${build_cmd} }--define cmake.sha256=$(printf "%q" "${CMAKE_SHA256}")"
34+
fi
35+
36+
if [[ "${BOOST_VERSION}" != "" ]]; then
37+
build_cmd="${build_cmd:+${build_cmd} }--define boost.version=$(printf "%q" "${BOOST_VERSION}")"
38+
fi
39+
40+
if [[ "${BOOST_SHA256}" != "" ]]; then
41+
build_cmd="${build_cmd:+${build_cmd} }--define boost.sha256=$(printf "%q" "${BOOST_SHA256}")"
42+
fi
43+
44+
build_cmd="${build_cmd:+${build_cmd} }package"
45+
46+
echo "Building with: ${build_cmd}"
47+
eval "${build_cmd}"
48+
49+
docker images
50+
}
51+
52+
test_images() {
53+
maven_project_version="$(mvn \
54+
--file "${TRAVIS_BUILD_DIR}/pom.xml" \
55+
--batch-mode \
56+
--non-recursive \
57+
--define expression=project.version \
58+
org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
59+
| sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }')"
60+
61+
image_name="${DOCKERHUB_USER}/maven-docker-builder-app:${maven_project_version}"
62+
echo "Running container created from ${image_name} image"
63+
docker run --rm "${image_name}" --help
64+
}
65+
66+
main() {
67+
build_maven_project "${@}"
68+
test_images "${@}"
69+
}
70+
71+
main "${@}"

0 commit comments

Comments
 (0)