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

Commit 129057b

Browse files
Merge pull request #49 from thefringeninja/only-docker
Complete Code Migration
2 parents f3bfa64 + 2274e89 commit 129057b

114 files changed

Lines changed: 185 additions & 6296 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.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: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,54 @@
1-
FROM microsoft/dotnet:2.1.500-sdk-alpine3.7 AS build
2-
ARG MYGET_API_KEY
1+
ARG CONTAINER_RUNTIME_VERSION=2.2.1
2+
ARG CONTAINER_RUNTIME=alpine3.8
3+
4+
FROM node:10.12.0-alpine AS build-javascript
5+
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}
10+
11+
WORKDIR /app
12+
13+
RUN echo "@sqlstreamstore:registry=${NPM_REGISTRY}" > .npmrc && \
14+
yarn init --yes && \
15+
yarn add ${CLIENT_PACKAGE}@${CLIENT_VERSION}
16+
17+
WORKDIR /app/node_modules/${CLIENT_PACKAGE}
18+
19+
RUN yarn && \
20+
yarn react-scripts-ts build && \
21+
echo ${CLIENT_VERSION} > /app/.clientversion
22+
23+
FROM microsoft/dotnet:2.2.103-sdk-stretch AS build-dotnet
24+
ARG CLIENT_PACKAGE=@sqlstreamstore/browser
25+
ARG RUNTIME=alpine-x64
26+
ARG LIBRARY_VERSION=1.2.0
327

428
WORKDIR /app
529

6-
COPY .git ./
30+
COPY ./*.sln .git ./
731

8-
RUN apk add --no-cache \
9-
nodejs \
10-
yarn \
11-
libcurl && \
12-
dotnet tool install -g minver-cli --version 1.0.0-beta.2 && \
13-
/root/.dotnet/tools/minver > .version
32+
RUN dotnet tool install -g minver-cli --version 1.0.0-beta.2 && \
33+
/root/.dotnet/tools/minver > .version
1434

1535
WORKDIR /app/src
1636

17-
COPY ./src/*.sln ./
18-
COPY ./src/*/*.csproj ./
37+
COPY ./src/*/*.csproj ./src/Directory.Build.props ./
38+
1939
RUN for file in $(ls *.csproj); do mkdir -p ./${file%.*}/ && mv $file ./${file%.*}/; done
2040

41+
WORKDIR /app
42+
2143
COPY ./NuGet.Config ./
2244

23-
RUN dotnet restore --runtime=alpine.3.7-x64
45+
RUN dotnet restore --runtime=${RUNTIME}
2446

25-
COPY ./src .
47+
WORKDIR /app/src
2648

27-
WORKDIR /app/docs
49+
COPY ./src .
2850

29-
COPY ./docs/package.json ./docs/yarn.lock ./
51+
COPY --from=build-javascript /app/node_modules/${CLIENT_PACKAGE}/build /app/src/SqlStreamStore.Server/Browser/build
3052

3153
WORKDIR /app/build
3254

@@ -36,17 +58,14 @@ RUN dotnet restore
3658

3759
COPY ./build .
3860

39-
COPY --from=sqlstreamstore/browser:0.9 /var/www /app/src/SqlStreamStore.HAL.ApplicationServer/Browser/build
40-
4161
WORKDIR /app
4262

43-
RUN MYGET_API_KEY=$MYGET_API_KEY \
44-
dotnet run --project build/build.csproj
63+
RUN dotnet run --project build/build.csproj -- --runtime=${RUNTIME} --library-version=${LIBRARY_VERSION}
4564

46-
FROM microsoft/dotnet:2.1.6-runtime-deps-alpine3.7 AS runtime
65+
FROM microsoft/dotnet:${CONTAINER_RUNTIME_VERSION}-runtime-deps-${CONTAINER_RUNTIME} AS runtime
4766

4867
WORKDIR /app
49-
COPY --from=build /app/.version ./
50-
COPY --from=build /app/publish ./
5168

52-
ENTRYPOINT ["/app/SqlStreamStore.HAL.ApplicationServer"]
69+
COPY --from=build-dotnet /app/publish /app/.version ./
70+
71+
ENTRYPOINT ["/app/SqlStreamStore.Server"]
File renamed without changes.

SqlStreamStore.Server.sln

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.27130.2027
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SqlStreamStore.Server", "src\SqlStreamStore.Server\SqlStreamStore.Server.csproj", "{B4B24F09-CB96-4D2E-A1D2-C50C9557F144}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{B4B24F09-CB96-4D2E-A1D2-C50C9557F144}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{B4B24F09-CB96-4D2E-A1D2-C50C9557F144}.Debug|Any CPU.Build.0 = Debug|Any CPU
16+
{B4B24F09-CB96-4D2E-A1D2-C50C9557F144}.Release|Any CPU.ActiveCfg = Release|Any CPU
17+
{B4B24F09-CB96-4D2E-A1D2-C50C9557F144}.Release|Any CPU.Build.0 = Release|Any CPU
18+
EndGlobalSection
19+
GlobalSection(SolutionProperties) = preSolution
20+
HideSolutionNode = FALSE
21+
EndGlobalSection
22+
GlobalSection(ExtensibilityGlobals) = postSolution
23+
SolutionGuid = {B73A9198-258A-4A4B-BDCA-F10648311761}
24+
EndGlobalSection
25+
EndGlobal

build.sh

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +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 \
15+
--build-arg CONTAINER_RUNTIME_VERSION=${CONTAINER_RUNTIME_VERSION:-2.2.1} \
16+
--build-arg CONTAINER_RUNTIME=${CONTAINER_RUNTIME} \
17+
--build-arg RUNTIME=${RUNTIME:-alpine-x64} \
18+
--build-arg LIBRARY_VERSION=${LIBRARY_VERSION} \
1219
--tag ${LOCAL} \
1320
.
1421

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

1723
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-]+)*)?$"
1824

19-
[[ $VERSION =~ $SEMVER_REGEX ]]
25+
[[ $LIBRARY_VERSION =~ $SEMVER_REGEX ]]
2026

21-
MAJOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}"
22-
MAJOR_MINOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
23-
MAJOR_MINOR_PATCH="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}"
24-
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}"
2530

26-
if [[ -n $TRAVIS_TAG && -z ${BASH_REMATCH[4]} ]]; then
31+
if [[ -z ${BASH_REMATCH[4]} ]]; then
2732
echo "Detected a tag with no prerelease."
2833
docker tag $LOCAL $MAJOR_MINOR_PATCH
2934
docker tag $LOCAL $MAJOR_MINOR
30-
if [[ ${BASH_REMATCH[1]} != "0" ]]; then
31-
docker tag $LOCAL $MAJOR
32-
else
33-
echo "Detected unstable version."
34-
fi
3535
else
3636
echo "Detected a prerelease."
3737
docker tag $LOCAL $MAJOR_MINOR_PATCH_PRE

build/Program.cs

Lines changed: 26 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
using System;
22
using System.IO;
33
using System.Linq;
4-
using System.Runtime.InteropServices;
5-
using System.Threading.Tasks;
4+
using Fclp;
65
using static Bullseye.Targets;
76
using static SimpleExec.Command;
87

@@ -11,67 +10,48 @@ static class Program
1110
private const string ArtifactsDir = "artifacts";
1211
private const string PublishDir = "publish";
1312

14-
private static readonly string MYGET_API_KEY = Environment.GetEnvironmentVariable(nameof(MYGET_API_KEY));
15-
1613
public static void Main(string[] args)
1714
{
1815
const string clean = nameof(Clean);
19-
const string init = nameof(Init);
20-
const string generateDocumentation = nameof(GenerateDocumentation);
2116
const string build = nameof(Build);
22-
const string runTests = nameof(RunTests);
23-
const string pack = nameof(Pack);
2417
const string publish = nameof(Publish);
25-
const string push = nameof(Push);
2618

27-
var srcDirectory = new DirectoryInfo("./src");
19+
var runtime = "alpine-x64";
20+
var libraryVersion = "1.2.0-beta.*";
2821

29-
Target(
30-
clean,
31-
Clean);
22+
var parser = new FluentCommandLineParser();
23+
parser.Setup<string>("runtime")
24+
.Callback(r => runtime = r);
25+
parser.Setup<string>("library-version")
26+
.Callback(v => libraryVersion = v);
3227

33-
Target(
34-
init,
35-
Init);
28+
var result = parser.Parse(args);
3629

37-
Target(
38-
generateDocumentation,
39-
DependsOn(init),
40-
ForEach(SchemaDirectories(srcDirectory)),
41-
GenerateDocumentation);
30+
args = result
31+
.AdditionalOptions
32+
.SelectMany(option => new[] {option.Key.Length == 1 ? $"-{option.Key}" : $"--{option.Key}", option.Value})
33+
.Where(arg => arg != null)
34+
.ToArray();
4235

4336
Target(
44-
build,
45-
DependsOn(generateDocumentation),
46-
Build);
37+
clean,
38+
Clean);
4739

4840
Target(
49-
runTests,
50-
DependsOn(build),
51-
RunTests);
41+
build,
42+
DependsOn(clean),
43+
Build(libraryVersion));
5244

5345
Target(
5446
publish,
5547
DependsOn(build),
56-
Publish);
48+
Publish(runtime, libraryVersion));
5749

58-
Target(
59-
pack,
60-
DependsOn(publish),
61-
Pack);
50+
Target("default", DependsOn(publish));
6251

63-
Target(
64-
push,
65-
DependsOn(pack),
66-
Push);
67-
68-
Target("default", DependsOn(clean, runTests, push));
69-
70-
RunTargetsAndExit(args.Concat(new[] {"--parallel"}));
52+
RunTargetsAndExit(args);
7153
}
7254

73-
private static readonly Action Init = () => Yarn("./docs");
74-
7555
private static readonly Action Clean = () =>
7656
{
7757
if (Directory.Exists(ArtifactsDir))
@@ -85,59 +65,11 @@ public static void Main(string[] args)
8565
}
8666
};
8767

88-
private static readonly Func<string, Task> GenerateDocumentation = schemaDirectory =>
89-
RunAsync(
90-
"node",
91-
$"node_modules/@adobe/jsonschema2md/cli.js -n --input {schemaDirectory} --out {schemaDirectory} --schema-out=-",
92-
"docs");
93-
94-
private static readonly Action Build = () => Run(
68+
private static Action Build(string libraryVersion) => () => Run(
9569
"dotnet",
96-
"build src/SqlStreamStore.HAL.sln --configuration Release");
70+
$"build SqlStreamStore.Server.sln --configuration=Release /p:LibraryVersion={libraryVersion}");
9771

98-
private static readonly Action RunTests = () => Run(
72+
private static Action Publish(string runtime, string libraryVersion) => () => Run(
9973
"dotnet",
100-
$"test src/SqlStreamStore.HAL.Tests --configuration Release --results-directory ../../{ArtifactsDir} --verbosity normal --no-build -l trx;LogFileName=SqlStreamStore.HAL.Tests.xml");
101-
102-
private static readonly Action Publish = () => Run(
103-
"dotnet",
104-
$"publish --configuration=Release --output=../../{PublishDir} --runtime=alpine.3.7-x64 /p:ShowLinkerSizeComparison=true src/SqlStreamStore.HAL.ApplicationServer");
105-
106-
private static readonly Action Pack = () => Run(
107-
"dotnet",
108-
$"pack src/SqlStreamStore.HAL --configuration Release --output ../../{ArtifactsDir} --no-build");
109-
110-
private static readonly Action Push = () =>
111-
{
112-
var packagesToPush = Directory.GetFiles(ArtifactsDir, "*.nupkg", SearchOption.TopDirectoryOnly);
113-
Console.WriteLine($"Found packages to publish: {string.Join("; ", packagesToPush)}");
114-
115-
if (string.IsNullOrWhiteSpace(MYGET_API_KEY))
116-
{
117-
Console.WriteLine("MyGet API key not available. Packages will not be pushed.");
118-
return;
119-
}
120-
121-
foreach (var packageToPush in packagesToPush)
122-
{
123-
Run(
124-
"dotnet",
125-
$"nuget push {packageToPush} -s https://www.myget.org/F/sqlstreamstore/api/v3/index.json -k {MYGET_API_KEY}");
126-
}
127-
};
128-
129-
private static void Yarn(string workingDirectory, string args = default)
130-
{
131-
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
132-
Run("cmd", "/c yarn", workingDirectory);
133-
else
134-
Run("yarn", args, workingDirectory);
135-
}
136-
137-
private static string[] SchemaDirectories(DirectoryInfo srcDirectory)
138-
=> srcDirectory.GetFiles("*.schema.json", SearchOption.AllDirectories)
139-
.Select(schemaFile => schemaFile.DirectoryName)
140-
.Distinct()
141-
.Select(schemaDirectory => schemaDirectory.Replace(Path.DirectorySeparatorChar, '/'))
142-
.ToArray();
74+
$"publish --configuration=Release --output=../../{PublishDir} --runtime={runtime} /p:ShowLinkerSizeComparison=true /p:LibraryVersion={libraryVersion} src/SqlStreamStore.Server");
14375
}

build/build.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>netcoreapp2.1</TargetFramework>
5+
<TargetFramework>netcoreapp2.2</TargetFramework>
66
<LangVersion>latest</LangVersion>
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Bullseye" Version="2.3.0-rc.1" />
10+
<PackageReference Include="Bullseye" Version="2.3.0" />
11+
<PackageReference Include="FluentCommandLineParser.NETStandard" Version="1.5.0.31-commands" />
1112
<PackageReference Include="SimpleExec" Version="4.2.0" />
1213
</ItemGroup>
1314

src/Directory.Build.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<Project>
33
<PropertyGroup>
44
<Authors>João P. Bragança</Authors>
5-
<PackageProjectUrl>https://github.com/SqlStreamStore/SqlStreamStore.HAL</PackageProjectUrl>
6-
<PackageLicenseUrl>https://github.com/SqlStreamStore/SqlStreamStore.HAL/blob/master/LICENSE</PackageLicenseUrl>
5+
<PackageProjectUrl>https://github.com/SqlStreamStore/SqlStreamStore.Server</PackageProjectUrl>
6+
<PackageLicenseUrl>https://github.com/SqlStreamStore/SqlStreamStore.Server/blob/master/LICENSE</PackageLicenseUrl>
77
<GenerateDocumentationFile>true</GenerateDocumentationFile>
88
<PackageTags>cqrs;event-sourcing;event-store;stream-store</PackageTags>
99
</PropertyGroup>

0 commit comments

Comments
 (0)