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