Skip to content

Commit a617b7d

Browse files
authored
Merge pull request #33 from metabrainz/fix-build
Fix building from Solr 7.7.2 with Alpine Linux
2 parents 3c62b07 + 7a7726c commit a617b7d

3 files changed

Lines changed: 95 additions & 17 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
mb-solr/target*
22
.idea/
33
*.iml
4+
/build-*.log

Dockerfile

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
1-
FROM solr:7.7.2-alpine
1+
ARG MAVEN_TAG=3.6.1-jdk-8
2+
ARG SOLR_NAME=metabrainz/solr
3+
ARG SOLR_TAG=7.7.2-alpine
24

3-
# Resetting value set in the parent image
4-
USER root
5-
6-
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
7-
apk add --update-cache --no-cache \
8-
bash \
9-
git \
10-
maven \
11-
openjdk8 \
12-
openssh
5+
FROM maven:${MAVEN_TAG} AS builder
136

147
# Caching the maven dependencies so that these are built only if
158
# the dependencies are changed and not the source code.
@@ -26,9 +19,33 @@ COPY ./mb-solr mb-solr
2619
RUN cd brainz-mmd2-jaxb && \
2720
mvn install && \
2821
cd ../mb-solr && \
29-
mvn package -DskipTests && \
30-
mkdir -p /opt/solr/lib && \
31-
cp target/mb-solr-0.0.1-SNAPSHOT-jar-with-dependencies.jar /opt/solr/lib
22+
mvn package -DskipTests
23+
24+
FROM ${SOLR_NAME}:${SOLR_TAG}
25+
26+
ARG MAVEN_TAG
27+
ARG SOLR_NAME
28+
ARG SOLR_TAG
29+
30+
ARG MB_SOLR_VERSION
31+
ARG BUILD_DATE
32+
ARG VCS_REF
33+
34+
LABEL org.label-schema.build-date="${BUILD_DATE}" \
35+
org.label-schema.schema-version="1.0.0-rc1" \
36+
org.label-schema.vcs-ref="${VCS_REF}" \
37+
org.label-schema.vcs-url="https://github.com/metabrainz/mb-solr.git" \
38+
org.label-schema.vendor="MetaBrainz Foundation" \
39+
org.metabrainz.based-on-image="${SOLR_NAME}:${SOLR_TAG}" \
40+
org.metabrainz.builder-image="maven:${MAVEN_TAG}" \
41+
org.metabrainz.mb-solr.version="${MB_SOLR_VERSION}"
42+
43+
# Resetting value set in the parent image
44+
USER root
45+
46+
COPY --from=builder \
47+
mb-solr/target/mb-solr-0.0.1-SNAPSHOT-jar-with-dependencies.jar \
48+
/opt/solr/lib/
3249

3350
ENV SOLR_HOME /opt/solr/server/solr
3451
COPY ./mbsssss $SOLR_HOME/mycores/mbsssss

push.sh

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,64 @@
1-
#!/bin/sh
1+
#!/bin/bash
2+
#
3+
# Build image from the currently checked out version of
4+
# MusicBrainz Solr search server (mb-solr)
5+
# and push it to Docker Hub, tagged with versions and variants.
6+
#
7+
# Examples:
8+
# - working tree at git tag v3.1.1 will push docker tags :3.1.1 :3.1 and :3
9+
# - working tree at git tag v3.1.1-rc.1 will push docker tag :3.1.1-rc.1 only
10+
# - untagged working tree v3.1-1-gbfe66e3 will push docker tag 3.1.1-gbfe66e3 only
11+
# - uncommitted/dirty working tree v3.1-dirty will push docker tag :3.1-dirty only
12+
#
13+
# Usage:
14+
# $ ./push.sh
215

3-
docker build -t metabrainz/solr .
4-
docker push metabrainz/solr
16+
set -e -u
17+
18+
image_name='metabrainz/mb-solr'
19+
20+
cd "$(dirname "${BASH_SOURCE[0]}")/"
21+
22+
vcs_ref=`git describe --always --broken --dirty --tags`
23+
version=${vcs_ref#v}
24+
25+
# enforce version format major.minor.patch if possible
26+
if [[ $version =~ ^[0-9]+$ ]]; then
27+
version="${version}.0.0"
28+
echo "$0: appended .0.0 to version"
29+
elif [[ $version =~ ^[0-9]+\.[0-9]+$ ]]; then
30+
version="${version}.0"
31+
echo "$0: appended .0 to version"
32+
fi
33+
34+
# add aliases if version is of format major.minor.patch
35+
if [[ $version =~ ^([0-9]+)\.([0-9]+)\.[0-9]\+$ ]]; then
36+
major=${BASH_REMATCH[1]}
37+
minor=${BASH_REMATCH[2]}
38+
version_aliases=( "${major}.${minor}" "${major}" )
39+
echo "$0: building version '$version' with aliases:"
40+
for version_alias in ${version_aliases[@]}; do
41+
echo "$0: - '$version_alias'"
42+
done
43+
else
44+
version_aliases=()
45+
echo "$0: building version '$version' without alias"
46+
fi
47+
48+
tag=${version}
49+
tag_aliases=${version_aliases[@]}
50+
timestamp=`date -u +"%Y-%m-%dT%H:%M:%SZ"`
51+
52+
docker build \
53+
--build-arg MB_SOLR_VERSION=${version} \
54+
--build-arg BUILD_DATE=${timestamp} \
55+
--build-arg VCS_REF=${vcs_ref} \
56+
--tag ${image_name}:${tag} . \
57+
| tee ./"build-${version}-at-${timestamp}.log"
58+
59+
docker push ${image_name}:${tag}
60+
61+
for tag_alias in ${tag_aliases[@]}; do
62+
docker tag ${image_name}:${tag} metabrainz/mb-solr:${tag_alias}
63+
docker push ${image_name}:${tag_alias}
64+
done

0 commit comments

Comments
 (0)