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

Commit 2274e89

Browse files
build enhancements
use travis matrix build to target multiple base containers
1 parent 8540780 commit 2274e89

5 files changed

Lines changed: 34 additions & 31 deletions

File tree

.travis.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@ env:
77
- secure: pnK+4X/2WLLMqEv0A2GAXHYkjjRKT+HeIOkSWLYvQc/2H8lPjg0JmQvq7MQIZJxetGv+gxSJtX2cbG55j6mj+inlHHWm87wHPh8zljJztRpH9Fz0IR5GXADuUjCRuvoHq+PJI5MZlcFPYbcaAKVOsyYlejy5Ok5wlYD2WUMMw4NH+iFmffbAuycVynZrzeEGzfx33nocUObamrMOru8UTcHEmR041mwOwjjkzzQmNSLaSt/sQvSrnR8jte3zfrCUT5H7uczs0lkO3OzhJAwqA7vULyRH9iugkauv0HzAorKXOMLKey6E/GZElHviU8E1NnbAOyoBKcITe4EDI1HSbWNQ8C7nFP6w8Rv/O1lRXWL8SHucNXbmETgJ8zlrVWlRMBmnjnjbr0uF7cK4lIaJG3B/ZsY6pMn/93pPLTLrlsl7ZCjxuplU5pfNq/ORnZnAhlKe5W2uxvNdK1C6soFaGvcvyMlcAcjx8Jhjq3Yh8sHknAl70ga/AhvjAzWaTKe5zXTxfXcRXQp5mF9k707qTDkDIeGwXxY92QeiRmFfOuH56UI4CsLgpPgk3yyaHTYZsVuJRHRSqHcNo6ivgF/vYRzSXreEWfd89d8E750SMf90ON8GiCu0cfgBbUUFtsZ8AJdwmp9F7JB23sEB9Gj1OTLgRT247hOmP0b4tinZz5M=
88
- secure: fKxyki9JzY95G17hNHSy4dgDmH+zXIk50BR6honAz7LmsA9jGv2gg+l1AIUERH3eckdJwxze4K0e5hX88Xfn4j5nN8TnEw7Wwn7c1vjR9FxvRr5cjaJC0SVsOTZj4VC1R9Sqjzrkqv3jJDtDdz9B8aZMdEzJ+BkHwUMFxmuko2p2qabKnAonaGk5VDSTtDyvDMa0aFjKDYuB6MrnrxhfCzLk1ciyGL61SNfz0/u7Hj3xC6v4U0f0BQ9n65l5dIVn+mpuCdQ7GO0HGj0ySo7ffif3qqXXTx7ZWIl3wvf5RCp0PouA8q2dRHYYyGqhhCwuRNU7dfhS/eFtUtcITclZ/DJE86NBQGJ9tpUUhL7BJ3sNJZzbajh1F28paJgi595SKpScp4VGx3iBuDSKH4eb3cRj5TJqCUoscue8/uIZGgR4PGkGF4lbad3b7xexIk1YY/2Rwun1J0N7tqS0rej3ZRZBtipMF64NrVnt9dZzgsIlssZ0W2NvG0vcLX6DUdeZaR0diz8bUl1DXrMFxAUQ/QYxilvaESmCslRElzlb+5eaqQTG5lSP5l6f3ZcKAhvcUGggu9t3vjzpEq3zFa5dorCyK+es1ASNlwZtZr8in9oYkvam9aiDkZD8cEc+9u+qxvnX9w3MsA0P047YCMQGgwRl5dpizoySC3wr52voK7I=
99
- secure: HvSSWjsLR6qFi9/iHMKKoVUT4BDN7h4QjKHLvcrznwpfojrA1+nIlIwgcaIkxi5WClsoPmwW8YInPlyIyV+37+SaNK4sxB2puzwaC3iHBi6Ql38q+olsLdCE8u+DcfEcnzQo8pinNoyBLRjBgHjTAbrwIkLETNOZchss4A4UVhvPSznuNz5imlZxp4LqZ2pW/YcaLeCMQzuJHt5iRM6O4CMu7O4kMP/SPQXIXcqqYWI+o4um1JFO5juXBXtrhcTkOHfvGjqZghwma1F3v7zLHtqrbGBxaTLGNj0EIWPQhQEE5wDpvAqLEZcySl0ZjsPQUJd2Uxi9b8mWM1x6WaZTu9uqIy5t9lkCwUkEAwc/LUXZxwL0oi8HncgJvu7Q5KwVn375sJ0CER0Vn1FO8jphnMbpfkqUmbZmkwoIAUENNNYyGEp6zoNnRvaFQTjEW4bL2huPS0g3BgC2xyh8d5ZsPykIgQXlM8EEA2BZkd+ep2rKjOPT94rs5V5IPuVi9FYzFIsc2kpEkKZO/38j6pEAdCVIZp1m0+KRlLNQ9FeaI+xtil95V5ALIEXpc44o5OuUSoxt5ZirYaGSJtUtxo8E+HqpNL5WrTUeE8+aZos6Tu7jF63U2ehwg5xR6EubvrBjWvSHsQKcwDfdeHK2m15S/mVlahpwyyoCASAJtV7mRJI=
10+
matrix:
11+
- CONTAINER_RUNTIME=alpine3.8 RUNTIME=alpine-x64
12+
- CONTAINER_RUNTIME=bionic RUNTIME=ubuntu.18.04-x64
13+
- CONTAINER_RUNTIME=stretch-slim RUNTIME=debian.9-x64
1014
git:
1115
depth: false

Dockerfile

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
ARG CONTAINER_RUNTIME=2.2.1-runtime-deps-alpine3.8
1+
ARG CONTAINER_RUNTIME_VERSION=2.2.1
2+
ARG CONTAINER_RUNTIME=alpine3.8
23

34
FROM node:10.12.0-alpine AS build-javascript
4-
ARG CLIENT_VERSION=0.9.2
5-
ARG NPM_REGISTRY=https://registry.npmjs.org
65
ARG CLIENT_PACKAGE=@sqlstreamstore/browser
6+
ARG CLIENT_VERSION=0.9.1-alpha.0.6
7+
ARG NPM_REGISTRY=https://www.myget.org/F/sqlstreamstore/npm/
8+
9+
ENV REACT_APP_CLIENT_VERSION=${CLIENT_VERSION}
710

811
WORKDIR /app
912

@@ -14,25 +17,24 @@ RUN echo "@sqlstreamstore:registry=${NPM_REGISTRY}" > .npmrc && \
1417
WORKDIR /app/node_modules/${CLIENT_PACKAGE}
1518

1619
RUN yarn && \
17-
yarn react-scripts-ts build
20+
yarn react-scripts-ts build && \
21+
echo ${CLIENT_VERSION} > /app/.clientversion
1822

19-
FROM microsoft/dotnet:2.2.102-sdk-stretch AS build-dotnet
23+
FROM microsoft/dotnet:2.2.103-sdk-stretch AS build-dotnet
2024
ARG CLIENT_PACKAGE=@sqlstreamstore/browser
2125
ARG RUNTIME=alpine-x64
2226
ARG LIBRARY_VERSION=1.2.0
2327

2428
WORKDIR /app
2529

26-
COPY .git ./
30+
COPY ./*.sln .git ./
2731

2832
RUN dotnet tool install -g minver-cli --version 1.0.0-beta.2 && \
29-
/root/.dotnet/tools/minver > .version
30-
31-
COPY ./*.sln ./
33+
/root/.dotnet/tools/minver > .version
3234

3335
WORKDIR /app/src
3436

35-
COPY ./src/*/*.csproj ./
37+
COPY ./src/*/*.csproj ./src/Directory.Build.props ./
3638

3739
RUN for file in $(ls *.csproj); do mkdir -p ./${file%.*}/ && mv $file ./${file%.*}/; done
3840

@@ -60,10 +62,10 @@ WORKDIR /app
6062

6163
RUN dotnet run --project build/build.csproj -- --runtime=${RUNTIME} --library-version=${LIBRARY_VERSION}
6264

63-
FROM microsoft/dotnet:${CONTAINER_RUNTIME} AS runtime
65+
FROM microsoft/dotnet:${CONTAINER_RUNTIME_VERSION}-runtime-deps-${CONTAINER_RUNTIME} AS runtime
6466

6567
WORKDIR /app
66-
COPY --from=build-dotnet /app/.version ./
67-
COPY --from=build-dotnet /app/publish ./
68+
69+
COPY --from=build-dotnet /app/publish /app/.version ./
6870

6971
ENTRYPOINT ["/app/SqlStreamStore.Server"]

build.sh

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,36 @@
22

33
set -e
44

5+
CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-alpine-3.8}
6+
LIBRARY_VERSION=${LIBRARY_VERSION:-1.2.0-beta.2}
7+
58
LOCAL_IMAGE="sql-stream-store-server"
69
LOCAL="${LOCAL_IMAGE}:latest"
710

8-
REMOTE_IMAGE="sqlstreamstore/hal"
11+
REMOTE_IMAGE="sqlstreamstore/server"
912

1013
docker build \
1114
--build-arg MYGET_API_KEY=$MYGET_API_KEY \
12-
--build-arg RUNTIME_CONTAINER=${RUNTIME_CONTAINER:-2.2.1-runtime-deps-alpine3.8} \
15+
--build-arg CONTAINER_RUNTIME_VERSION=${CONTAINER_RUNTIME_VERSION:-2.2.1} \
16+
--build-arg CONTAINER_RUNTIME=${CONTAINER_RUNTIME} \
1317
--build-arg RUNTIME=${RUNTIME:-alpine-x64} \
14-
--build-arg LIBRARY_VERSION=${LIBRARY_VERSION:-1.2.0-beta.*} \
18+
--build-arg LIBRARY_VERSION=${LIBRARY_VERSION} \
1519
--tag ${LOCAL} \
1620
.
1721

18-
VERSION=$(docker run --entrypoint=cat ${LOCAL} /app/.version)
1922

2023
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-]+)*)?$"
2124

22-
[[ $VERSION =~ $SEMVER_REGEX ]]
25+
[[ $LIBRARY_VERSION =~ $SEMVER_REGEX ]]
2326

24-
MAJOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}"
25-
MAJOR_MINOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
26-
MAJOR_MINOR_PATCH="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}"
27-
MAJOR_MINOR_PATCH_PRE="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}${BASH_REMATCH[4]}"
27+
MAJOR_MINOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}-${CONTAINER_RUNTIME}"
28+
MAJOR_MINOR_PATCH="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}-${CONTAINER_RUNTIME}"
29+
MAJOR_MINOR_PATCH_PRE="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}${BASH_REMATCH[4]}-${CONTAINER_RUNTIME}"
2830

29-
if [[ -n $TRAVIS_TAG && -z ${BASH_REMATCH[4]} ]]; then
31+
if [[ -z ${BASH_REMATCH[4]} ]]; then
3032
echo "Detected a tag with no prerelease."
3133
docker tag $LOCAL $MAJOR_MINOR_PATCH
3234
docker tag $LOCAL $MAJOR_MINOR
33-
if [[ ${BASH_REMATCH[1]} != "0" ]]; then
34-
docker tag $LOCAL $MAJOR
35-
else
36-
echo "Detected unstable version."
37-
fi
3835
else
3936
echo "Detected a prerelease."
4037
docker tag $LOCAL $MAJOR_MINOR_PATCH_PRE

src/SqlStreamStore.Server/SqlStreamStore.Server.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
66
<LangVersion>latest</LangVersion>
77
<CrossGenDuringPublish>false</CrossGenDuringPublish>
8-
<LibraryVersion Condition="$(LibraryVersion) == ''">1.2.0-beta.*</LibraryVersion>
8+
<LibraryVersion Condition="$(LibraryVersion) == ''">1.2.0-beta.2</LibraryVersion>
99
</PropertyGroup>
1010
<ItemGroup>
1111
<PackageReference Include="ILLink.Tasks" Version="0.1.5-preview-1841731" />

src/SqlStreamStore.Server/SqlStreamStoreFactory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ CREATE DATABASE [{connectionStringBuilder.InitialCatalog}]
9898

9999
var streamStore = new MsSqlStreamStoreV3(settings);
100100

101-
await streamStore.CreateSchemaIfNotExists(cancellationToken);
101+
await streamStore.CreateSchema(cancellationToken);
102102

103103
return streamStore;
104104
}
@@ -145,7 +145,7 @@ private static async Task<IStreamStore> CreatePostgresStreamStore(
145145

146146
var streamStore = new PostgresStreamStore(settings);
147147

148-
await streamStore.CreateSchemaIfNotExists(cancellationToken);
148+
await streamStore.CreateSchema(cancellationToken);
149149

150150
return streamStore;
151151
}

0 commit comments

Comments
 (0)