Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit d47ea79

Browse files
semantically versioning the container
1 parent 3dd0694 commit d47ea79

2 files changed

Lines changed: 41 additions & 12 deletions

File tree

Dockerfile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
FROM microsoft/dotnet:2.1.500-sdk-alpine3.7 AS build
22
ARG MYGET_API_KEY
33

4+
WORKDIR /app
5+
6+
COPY .git ./
7+
48
RUN apk add --no-cache \
59
nodejs \
610
yarn \
7-
libcurl
11+
libcurl && \
12+
dotnet tool install -g minver-cli --version 1.0.0-alpha.15 && \
13+
/root/.dotnet/tools/minver > .version
814

915
WORKDIR /app/src
1016

@@ -22,10 +28,6 @@ WORKDIR /app/docs
2228

2329
COPY ./docs/package.json ./docs/yarn.lock ./
2430

25-
WORKDIR /app/.git
26-
27-
COPY ./.git .
28-
2931
WORKDIR /app/build
3032

3133
COPY ./build/build.csproj .

build.sh

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,42 @@
11
#!/usr/bin/env bash
2+
23
set -e
34

4-
DOCKERTAG=${TRAVIS_TAG:-latest}
5-
BUILD_NUMBER=${TRAVIS_BUILD_NUMBER:-0}
6-
COMMIT=${TRAVIS_PULL_REQUEST_SHA:-${TRAVIS_COMMIT:-unknown}}
7-
MINVERBUILDMETADATA="build.${BUILD_NUMBER}.${COMMIT}"
5+
LOCAL_IMAGE="sql-stream-store-server"
6+
LOCAL="${LOCAL_IMAGE}:latest"
7+
8+
REMOTE_IMAGE="sql-stream-store/server"
89

910
docker build \
10-
--build-arg MINVERBUILDMETADATA=$MINVERBUILDMETADATA \
1111
--build-arg MYGET_API_KEY=$MYGET_API_KEY \
12-
--tag sql-stream-store-server:${DOCKERTAG} \
12+
--tag ${LOCAL} \
1313
.
1414

15-
docker images --filter=reference="sql-stream-store-server:${DOCKERTAG}"
15+
VERSION=$(docker run --entrypoint=cat ${LOCAL} /app/.version)
16+
17+
SEMVER_REGEX="^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$"
18+
19+
[[ $VERSION =~ $SEMVER_REGEX ]]
20+
21+
LATEST="${REMOTE_IMAGE}:latest"
22+
MAJOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}"
23+
MAJOR_MINOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
24+
MAJOR_MINOR_PATCH="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}"
25+
MAJOR_MINOR_PATCH_PRE="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}${BASH_REMATCH[4]}"
26+
27+
if [[ -n $TRAVIS_TAG && -z ${BASH_REMATCH[4]} ]]; then
28+
echo "Detected a tag with no prerelease."
29+
docker tag $LOCAL $LATEST
30+
docker tag $LOCAL $MAJOR_MINOR_PATCH
31+
docker tag $LOCAL $MAJOR_MINOR
32+
if [[ ${BASH_REMATCH[1]} != "0" ]]; then
33+
docker tag $LOCAL $MAJOR
34+
else
35+
echo "Detected unstable version."
36+
fi
37+
else
38+
echo "Detected a prerelease."
39+
docker tag $LOCAL $MAJOR_MINOR_PATCH_PRE
40+
fi
41+
42+
docker images --filter=reference="${REMOTE_IMAGE}"

0 commit comments

Comments
 (0)