Skip to content

Commit 2988985

Browse files
fle-bachNicolas ERNY
authored andcommitted
Circleci: Publish package on nuget when a release is created (#94)
* add possibility publish nuget using circleci if tag is define * repair formattedNugetVersion to version * repair build.cake * add condition for push package && add = * test tags only version 0-9.0-9.0-9 * test tags only version 6-9.0-9.0-9 * all jobs with filters * test tags version * add jobs who do just release * do release in other workflow * * to + * add ignore branches * test surcharge project username * test write tag * return with filter * * test tag * test tag * test on one job * test on one job * test with tag * test with tag and img dotnet with this path * push version normaly can push nuget if tag is precise (but failed if has a bad format) * launch circleci test * add check tag with good format * fix ./ for path * build release using one workflows * change method for get directory by cake.xcomponent * delete nuget MSTest unused
1 parent 37c915b commit 2988985

File tree

4 files changed

+57
-144
lines changed

4 files changed

+57
-144
lines changed

.circleci/config.yml

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ references:
2727
key: v2-nuget-{{ .Branch }}-{{ checksum "shasum.tmp" }}
2828
paths:
2929
- /home/circleci/.nuget
30-
30+
3131
jobs:
3232
checkout_code:
3333
docker:
@@ -49,12 +49,18 @@ jobs:
4949
- *restore_nuget
5050
- run:
5151
name: ReactiveApi - Build All
52-
command: cd /home/circleci/project/ && ./build.sh -t All
52+
command: |
53+
if [ "${CIRCLE_TAG}" == "" ]; then
54+
cd /home/circleci/project/ && ./build.sh -t All
55+
else
56+
cd /home/circleci/project/ && ./build.sh -t All -buildConfiguration=Release -buildVersion=$CIRCLE_TAG
57+
fi
5358
- *save_nuget
5459
- persist_to_workspace:
5560
root: /home/circleci/project
5661
paths:
5762
- packaging
63+
- nuget
5864

5965
build_sh_intergration_test_reactiveapi:
6066
docker:
@@ -97,17 +103,58 @@ jobs:
97103
cd ./docker/integration_tests/dockerScripts
98104
docker-compose -f ./docker-compose-reactiveapi.yml up --exit-code-from clientapp
99105
106+
deploy_nuget:
107+
docker:
108+
- image: microsoft/dotnet:2.1-sdk
109+
steps:
110+
- *restore_repo
111+
- *generate_nuget_shasum
112+
- *restore_nuget
113+
- attach_workspace:
114+
at: /home/circleci/project
115+
- run:
116+
name: Deploy nuget package
117+
command: cd /home/circleci/project/ && ./build.sh -t PushPackage -buildConfiguration=Release -buildVersion=$CIRCLE_TAG -nugetkey=$NUGET_API_KEY
118+
100119
workflows:
101120
version: 2
102121
xcomponent_reactive_api:
103122
jobs:
104-
- checkout_code
123+
- checkout_code:
124+
filters:
125+
tags:
126+
only: /^[0-9]++\.[0-9]++\.[0-9]++/
127+
branches:
128+
only: /.*/
105129
- build_sh_reactiveapi:
106130
requires:
107131
- checkout_code
132+
filters:
133+
tags:
134+
only: /^[0-9]++\.[0-9]++\.[0-9]++/
135+
branches:
136+
only: /.*/
108137
- build_sh_intergration_test_reactiveapi:
109138
requires:
110139
- build_sh_reactiveapi
140+
filters:
141+
tags:
142+
only: /^[0-9]++\.[0-9]++\.[0-9]++/
143+
branches:
144+
only: /.*/
111145
- reactiveapi_integrationtests:
112146
requires:
113-
- build_sh_intergration_test_reactiveapi
147+
- build_sh_intergration_test_reactiveapi
148+
filters:
149+
tags:
150+
only: /^[0-9]++\.[0-9]++\.[0-9]++/
151+
branches:
152+
only: /.*/
153+
- deploy_nuget:
154+
requires:
155+
- reactiveapi_integrationtests
156+
filters:
157+
tags:
158+
only: /^[0-9]++\.[0-9]++\.[0-9]++/
159+
branches:
160+
ignore: /.*/

ReactiveXComponentTest/ReactiveXComponentTest.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
<ItemGroup>
77
<PackageReference Include="Castle.Core" Version="4.3.1" />
88
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
9-
<PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
10-
<PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
119
<PackageReference Include="NFluent" Version="2.4.0" />
1210
<PackageReference Include="NSubstitute" Version="3.1.0" />
1311
<PackageReference Include="NUnit" Version="3.11.0" />

build.cake

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#tool "nuget:?package=NUnit.ConsoleRunner&version=3.9.0"
22
#addin "Cake.FileHelpers&version=3.1.0"
3-
#addin "Cake.XComponent&version=6.0.0"
3+
#addin "Cake.XComponent&version=6.0.1"
44
#addin "Cake.Incubator&version=3.0.0"
55
#load "cake.scripts/utilities.cake"
66

77
var target = Argument("target", "Build");
88
var buildConfiguration = Argument("buildConfiguration", "Debug");
9-
var version = Argument("buildVersion", "1.0.0-build1");
9+
var version = Argument("buildVersion", "1.0.0");
1010
var vsVersion = Argument("vsVersion", "VS2017");
1111
var apiKey = Argument("nugetKey", "");
1212
var setAssemblyVersion = Argument<bool>("setAssemblyVersion", false);
@@ -60,26 +60,23 @@ Task("Test")
6060
Task("CreatePackage")
6161
.Does(() =>
6262
{
63-
var formattedNugetVersion = FormatNugetVersion(version);
6463
DotNetCorePack(
6564
"ReactiveXComponent/ReactiveXComponent.csproj",
6665
new DotNetCorePackSettings {
6766
Configuration = buildConfiguration,
6867
OutputDirectory = @"nuget",
69-
VersionSuffix = formattedNugetVersion,
70-
MSBuildSettings = new DotNetCoreMSBuildSettings{}.SetVersion(formattedNugetVersion),
68+
VersionSuffix = version,
69+
MSBuildSettings = new DotNetCoreMSBuildSettings{}.SetVersion(version),
7170
}
7271
);
7372
});
7473

7574
Task("PushPackage")
76-
.IsDependentOn("All")
7775
.Does(() =>
7876
{
79-
var formattedNugetVersion = FormatNugetVersion(version);
8077
if (!string.IsNullOrEmpty(apiKey))
8178
{
82-
var package = "./nuget/ReactiveXComponent.Net." + formattedNugetVersion + ".nupkg";
79+
var package = "./nuget/ReactiveXComponent.Net." + version + ".nupkg";
8380
DotNetCoreNuGetPush(package, new DotNetCoreNuGetPushSettings
8481
{
8582
Source = "https://www.nuget.org/api/v2/package",
@@ -151,7 +148,7 @@ Task("BuildIntegrationTests")
151148
Task("PackageDockerIntegrationTests")
152149
.Does(() =>
153150
{
154-
Zip( GetXcRuntimePath().Replace("xcruntime.exe", ""), "./docker/integration_tests/dockerScripts/XCContainer/XCRuntime.zip");
151+
Zip( GetXcRuntimeDirectory(), "./docker/integration_tests/dockerScripts/XCContainer/XCRuntime.zip");
155152
Zip("./docker/integration_tests/XCProjects/HelloWorldV5/xcr/xcassemblies", "./docker/integration_tests/dockerScripts/XCContainer/HelloWorldV5XCassemblies.zip");
156153
Zip("./docker/integration_tests/XCProjects/HelloWorldV5/CreateInstancesReactiveApi/CreateInstances/bin/" + buildConfiguration + "/netcoreapp2.1", "./docker/integration_tests/dockerScripts/AppsContainer/CreateInstanceReactiveApi.zip");
157154
});

cake.scripts/utilities.cake

Lines changed: 0 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,134 +1,5 @@
11
#addin "Cake.Incubator&version=3.0.0"
22

3-
var FormatAssemblyVersion = new Func<string, string>(currentVersion =>
4-
{
5-
var result = string.Empty;
6-
var versionType = string.Empty;
7-
8-
if (currentVersion.Contains("build"))
9-
{
10-
versionType = "build";
11-
}
12-
else if (currentVersion.Contains("rc"))
13-
{
14-
versionType = "rc";
15-
}
16-
else if (currentVersion.Contains("release"))
17-
{
18-
versionType = "release";
19-
}
20-
21-
if (!string.IsNullOrEmpty(versionType))
22-
{
23-
var versionComponents = currentVersion.Split('-');
24-
var majorVersion = versionComponents[0];
25-
var buildVersion = versionComponents[1];
26-
var buildNumberStr = buildVersion.Substring(
27-
versionType.Length,
28-
buildVersion.Length - versionType.Length);
29-
30-
var buildNumber = int.Parse(buildNumberStr);
31-
var buildNumberPrefix = string.Empty;
32-
if (buildNumber < 10)
33-
{
34-
buildNumberPrefix = "000";
35-
}
36-
else if (buildNumber < 100)
37-
{
38-
buildNumberPrefix = "00";
39-
}
40-
else if (buildNumber < 1000)
41-
{
42-
buildNumberPrefix = "0";
43-
}
44-
else if (buildNumber > 60000)
45-
{
46-
buildNumberPrefix = "9";
47-
}
48-
49-
var versionTypeNumber = string.Empty;
50-
51-
switch (versionType)
52-
{
53-
case "build":
54-
versionTypeNumber = "1";
55-
break;
56-
case "rc":
57-
versionTypeNumber = "2";
58-
break;
59-
case "release":
60-
versionTypeNumber = "3";
61-
break;
62-
default:
63-
versionTypeNumber = "0";
64-
break;
65-
}
66-
67-
result = majorVersion + "." + versionTypeNumber + buildNumberPrefix + buildNumberStr;
68-
}
69-
else
70-
{
71-
result = currentVersion + ".4";
72-
}
73-
74-
return result;
75-
});
76-
77-
var FormatNugetVersion = new Func<string, string>(currentVersion =>
78-
{
79-
var result = currentVersion;
80-
var versionType = string.Empty;
81-
82-
if (currentVersion.Contains("build"))
83-
{
84-
versionType = "build";
85-
}
86-
else if (currentVersion.Contains("rc"))
87-
{
88-
versionType = "rc";
89-
}
90-
else if (currentVersion.Contains("release"))
91-
{
92-
versionType = "release";
93-
}
94-
95-
if (!string.IsNullOrEmpty(versionType))
96-
{
97-
var versionComponents = currentVersion.Split('-');
98-
var majorVersion = versionComponents[0];
99-
100-
if (versionType == "release")
101-
{
102-
result = majorVersion;
103-
}
104-
else
105-
{
106-
var buildVersion = versionComponents[1];
107-
var buildNumberStr = buildVersion.Substring(
108-
versionType.Length,
109-
buildVersion.Length - versionType.Length);
110-
111-
var buildNumber = int.Parse(buildNumberStr);
112-
var buildNumberPrefix = string.Empty;
113-
if (buildNumber < 10)
114-
{
115-
buildNumberPrefix = "00";
116-
}
117-
else if (buildNumber < 100)
118-
{
119-
buildNumberPrefix = "0";
120-
}
121-
else if (buildNumber > 1000)
122-
{
123-
buildNumberPrefix = string.Empty;
124-
}
125-
result = majorVersion + "-" + versionType + "v" + buildNumberPrefix + buildNumberStr;
126-
}
127-
}
128-
129-
return result;
130-
});
131-
1323
Func<bool> IsRunningOnOsx = () =>
1334
{
1345
return DirectoryExists("/Applications");

0 commit comments

Comments
 (0)