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

Commit 9d010c4

Browse files
changing how we do semantic versioning
1 parent b953716 commit 9d010c4

4 files changed

Lines changed: 65 additions & 25 deletions

File tree

Dockerfile

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
FROM microsoft/dotnet:2.1.403-sdk-alpine3.7 AS build
22
ARG TRAVIS_BUILD_NUMBER
3+
ARG TRAVIS_PULL_REQUEST_SHA
4+
ARG TRAVIS_COMMIT
5+
ARG TRAVIS_PULL_REQUEST
6+
ARG TRAVIS_BRANCH
37
ARG MYGET_API_KEY
48
WORKDIR /src
59

@@ -23,7 +27,13 @@ COPY ./build .
2327

2428
WORKDIR /
2529

26-
RUN TRAVIS_BUILD_NUMBER=$TRAVIS_BUILD_NUMBER MYGET_API_KEY=$MYGET_API_KEY dotnet run --project build/build.csproj
30+
RUN TRAVIS_BUILD_NUMBER=$TRAVIS_BUILD_NUMBER \
31+
MYGET_API_KEY=$MYGET_API_KEY \
32+
TRAVIS_PULL_REQUEST_SHA=$TRAVIS_PULL_REQUEST_SHA \
33+
TRAVIS_COMMIT=$TRAVIS_COMMIT \
34+
TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST \
35+
TRAVIS_BRANCH=$TRAVIS_BRANCH \
36+
dotnet run --project build/build.csproj
2737

2838
FROM build as publish
2939

build.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ DOCKERTAG=${TRAVIS_TAG:-latest}
44
docker build \
55
--build-arg TRAVIS_BUILD_NUMBER=$TRAVIS_BUILD_NUMBER \
66
--build-arg MYGET_API_KEY=$MYGET_API_KEY \
7+
--build-arg TRAVIS_PULL_REQUEST_SHA=$TRAVIS_PULL_REQUEST_SHA \
8+
--build-arg TRAVIS_COMMIT=$TRAVIS_COMMIT \
9+
--build-arg TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST \
10+
--build-arg TRAVIS_BRANCH=$TRAVIS_BRANCH \
711
--tag sql-stream-store-server:${DOCKERTAG} \
812
. && \
913
docker images --filter=reference="sql-stream-store-server:${DOCKERTAG}"

build/Program.cs

Lines changed: 49 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ static class Program
1515

1616
public static void Main(string[] args)
1717
{
18-
var buildNumber = Environment.GetEnvironmentVariable("TRAVIS_BUILD_NUMBER") ?? "0";
19-
var versionSuffix = "build" + buildNumber.PadLeft(5, '0');
18+
var buildNumber = GetBuildNumber();
19+
var branch = GetBranch();
20+
var commitHash = GetCommitHash();
21+
var buildMetadata = $"build.{buildNumber}.{branch}.{commitHash}";
2022
var apiKey = Environment.GetEnvironmentVariable("MYGET_API_KEY");
2123

2224
Target(Clean, () =>
@@ -27,7 +29,11 @@ public static void Main(string[] args)
2729
}
2830
});
2931

30-
Target(Build, () => Run("dotnet", "build src/SqlStreamStore.HAL.sln -c Release"));
32+
Target(
33+
Build,
34+
() => Run(
35+
"dotnet",
36+
$"build src/SqlStreamStore.HAL.sln -c Release /p:BuildMetadata={buildMetadata}"));
3137

3238
Target(
3339
RunTests,
@@ -38,30 +44,49 @@ public static void Main(string[] args)
3844

3945
Target(
4046
Pack,
41-
DependsOn(Build),
42-
() => Run("dotnet",
43-
$"pack src/SqlStreamStore.HAL -c Release -o ../../{ArtifactsDir} --no-build --version-suffix {versionSuffix}"));
44-
45-
Target(Publish, DependsOn(Pack), () =>
46-
{
47-
var packagesToPush = Directory.GetFiles(ArtifactsDir, "*.nupkg", SearchOption.TopDirectoryOnly);
48-
Console.WriteLine($"Found packages to publish: {string.Join("; ", packagesToPush)}");
49-
50-
if (string.IsNullOrWhiteSpace(apiKey))
51-
{
52-
Console.WriteLine("MyGet API key not available. Packages will not be pushed.");
53-
return;
54-
}
47+
DependsOn(Build),
48+
() => Run(
49+
"dotnet",
50+
$"pack src/SqlStreamStore.HAL -c Release -o ../../{ArtifactsDir} --no-build"));
5551

56-
foreach (var packageToPush in packagesToPush)
57-
{
58-
Run("dotnet",
59-
$"nuget push {packageToPush} -s https://www.myget.org/F/sqlstreamstore/api/v3/index.json -k {apiKey}");
60-
}
61-
});
52+
Target(
53+
Publish,
54+
DependsOn(Pack),
55+
() => {
56+
var packagesToPush = Directory.GetFiles(ArtifactsDir, "*.nupkg", SearchOption.TopDirectoryOnly);
57+
Console.WriteLine($"Found packages to publish: {string.Join("; ", packagesToPush)}");
58+
59+
if (string.IsNullOrWhiteSpace(apiKey))
60+
{
61+
Console.WriteLine("MyGet API key not available. Packages will not be pushed.");
62+
return;
63+
}
64+
65+
foreach (var packageToPush in packagesToPush)
66+
{
67+
Run(
68+
"dotnet",
69+
$"nuget push {packageToPush} -s https://www.myget.org/F/sqlstreamstore/api/v3/index.json -k {apiKey}");
70+
}
71+
});
6272

6373
Target("default", DependsOn(Clean, RunTests, Publish));
6474

6575
RunTargets(args);
6676
}
67-
}
77+
78+
private static string GetBranch()
79+
=> (Environment.GetEnvironmentVariable("TRAVIS_PULL_REQUEST")?.ToLower() == "false"
80+
? null
81+
: $"pr-{Environment.GetEnvironmentVariable("TRAVIS_PULL_REQUEST")}")
82+
?? Environment.GetEnvironmentVariable("TRAVIS_BRANCH")
83+
?? "none";
84+
85+
private static string GetCommitHash()
86+
=> Environment.GetEnvironmentVariable("TRAVIS_PULL_REQUEST_SHA")
87+
?? Environment.GetEnvironmentVariable("TRAVIS_COMMIT")
88+
?? "none";
89+
90+
private static string GetBuildNumber()
91+
=> (Environment.GetEnvironmentVariable("TRAVIS_BUILD_NUMBER") ?? "0").PadLeft(5, '0');
92+
}

src/Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup>
44
<VersionPrefix>1.0.0</VersionPrefix>
55
<VersionSuffix>rc2</VersionSuffix>
6+
<InformationalVersion>$(VersionPrefix)-$(VersionSuffix)+$(BuildMetadata)</InformationalVersion>
67
<Authors>João P. Bragança</Authors>
78
<PackageProjectUrl>https://github.com/SqlStreamStore/SqlStreamStore.HAL</PackageProjectUrl>
89
<PackageLicenseUrl>https://github.com/SqlStreamStore/SqlStreamStore.HAL/blob/master/LICENSE</PackageLicenseUrl>

0 commit comments

Comments
 (0)