Skip to content

Commit 45b07d2

Browse files
committed
Merge pull request #289 from myget/master
MyGet support (output specific to MyGet build server)
2 parents 963a024 + fce0bca commit 45b07d2

File tree

7 files changed

+113
-22
lines changed

7 files changed

+113
-22
lines changed

GitVersionCore/BuildServers/BuildServerList.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ static IEnumerable<IBuildServer> DefaultSelector(Authentication authentication)
2727
{
2828
new ContinuaCi(authentication),
2929
new TeamCity(authentication),
30-
new AppVeyor(authentication)
30+
new AppVeyor(authentication),
31+
new MyGet(authentication)
3132
};
3233
}
3334

GitVersionCore/BuildServers/MyGet.cs

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
namespace GitVersion
2+
{
3+
using System;
4+
using System.Collections.Generic;
5+
6+
public class MyGet : BuildServerBase
7+
{
8+
Authentication authentication;
9+
10+
public MyGet(Authentication authentication)
11+
{
12+
this.authentication = authentication;
13+
}
14+
15+
public override bool CanApplyToCurrentContext()
16+
{
17+
var buildRunner = Environment.GetEnvironmentVariable("BuildRunner");
18+
19+
return !string.IsNullOrEmpty(buildRunner)
20+
&& buildRunner.Equals("MyGet", StringComparison.InvariantCultureIgnoreCase);
21+
}
22+
23+
public override void PerformPreProcessingSteps(string gitDirectory)
24+
{
25+
if (string.IsNullOrEmpty(gitDirectory))
26+
{
27+
throw new WarningException("Failed to find .git directory on agent.");
28+
}
29+
30+
GitHelper.NormalizeGitDirectory(gitDirectory, authentication);
31+
}
32+
33+
public override string[] GenerateSetParameterMessage(string name, string value)
34+
{
35+
var messages = new List<string>
36+
{
37+
string.Format("##myget[setParameter name='GitVersion.{0}' value='{1}']", name, ServiceMessageEscapeHelper.EscapeValue(value))
38+
};
39+
40+
if (string.Equals(name, "LegacySemVerPadded", StringComparison.InvariantCultureIgnoreCase))
41+
{
42+
messages.Add(string.Format("##myget[buildNumber '{0}']", ServiceMessageEscapeHelper.EscapeValue(value)));
43+
}
44+
45+
return messages.ToArray();
46+
}
47+
48+
public override string GenerateSetVersionMessage(string versionToUseForBuildNumber)
49+
{
50+
return null;
51+
}
52+
}
53+
}

GitVersionCore/BuildServers/TeamCity.cs

+3-21
Original file line numberDiff line numberDiff line change
@@ -30,32 +30,14 @@ public override string[] GenerateSetParameterMessage(string name, string value)
3030
{
3131
return new[]
3232
{
33-
string.Format("##teamcity[setParameter name='GitVersion.{0}' value='{1}']", name, EscapeValue(value)),
34-
string.Format("##teamcity[setParameter name='system.GitVersion.{0}' value='{1}']", name, EscapeValue(value))
33+
string.Format("##teamcity[setParameter name='GitVersion.{0}' value='{1}']", name, ServiceMessageEscapeHelper.EscapeValue(value)),
34+
string.Format("##teamcity[setParameter name='system.GitVersion.{0}' value='{1}']", name, ServiceMessageEscapeHelper.EscapeValue(value))
3535
};
3636
}
3737

3838
public override string GenerateSetVersionMessage(string versionToUseForBuildNumber)
3939
{
40-
return string.Format("##teamcity[buildNumber '{0}']", EscapeValue(versionToUseForBuildNumber));
41-
}
42-
43-
static string EscapeValue(string value)
44-
{
45-
if (value == null)
46-
{
47-
return null;
48-
}
49-
// List of escape values from http://confluence.jetbrains.com/display/TCD8/Build+Script+Interaction+with+TeamCity
50-
51-
value = value.Replace("|", "||");
52-
value = value.Replace("'", "|'");
53-
value = value.Replace("[", "|[");
54-
value = value.Replace("]", "|]");
55-
value = value.Replace("\r", "|r");
56-
value = value.Replace("\n", "|n");
57-
58-
return value;
40+
return string.Format("##teamcity[buildNumber '{0}']", ServiceMessageEscapeHelper.EscapeValue(versionToUseForBuildNumber));
5941
}
6042
}
6143
}

GitVersionCore/GitVersionCore.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
<Compile Include="BuildServers\ContinuaCi.cs" />
6363
<Compile Include="BuildServers\GitHelper.cs" />
6464
<Compile Include="BuildServers\IBuildServer.cs" />
65+
<Compile Include="BuildServers\MyGet.cs" />
6566
<Compile Include="BuildServers\TeamCity.cs" />
6667
<Compile Include="GitFlow\BranchFinders\BranchCommitDifferenceFinder.cs" />
6768
<Compile Include="GitFlow\BranchFinders\RecentTagVersionExtractor.cs" />

GitVersionCore/Helpers/DeleteHelper.cs

+20
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,26 @@
22
{
33
using System.IO;
44

5+
public static class ServiceMessageEscapeHelper
6+
{
7+
public static string EscapeValue(string value)
8+
{
9+
if (value == null)
10+
{
11+
return null;
12+
}
13+
// List of escape values from http://confluence.jetbrains.com/display/TCD8/Build+Script+Interaction+with+TeamCity
14+
15+
value = value.Replace("|", "||");
16+
value = value.Replace("'", "|'");
17+
value = value.Replace("[", "|[");
18+
value = value.Replace("]", "|]");
19+
value = value.Replace("\r", "|r");
20+
value = value.Replace("\n", "|n");
21+
22+
return value;
23+
}
24+
}
525
public static class DeleteHelper
626
{
727
public static void DeleteGitRepository(string directory)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using GitVersion;
2+
using NUnit.Framework;
3+
4+
[TestFixture]
5+
public class MyGetTests
6+
{
7+
[Test]
8+
public void Develop_branch()
9+
{
10+
var authentication = new Authentication();
11+
var versionBuilder = new MyGet(authentication);
12+
var message = versionBuilder.GenerateSetVersionMessage("0.0.0-Unstable4");
13+
Assert.AreEqual(null, message);
14+
}
15+
16+
[Test]
17+
public void EscapeValues()
18+
{
19+
var authentication = new Authentication();
20+
var versionBuilder = new MyGet(authentication);
21+
var message = versionBuilder.GenerateSetParameterMessage("Foo", "0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'");
22+
Assert.AreEqual("##myget[setParameter name='GitVersion.Foo' value='0.8.0-unstable568 Branch:|'develop|' Sha:|'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb|'']", message[0]);
23+
}
24+
25+
[Test]
26+
public void BuildNumber()
27+
{
28+
var authentication = new Authentication();
29+
var versionBuilder = new MyGet(authentication);
30+
var message = versionBuilder.GenerateSetParameterMessage("LegacySemVerPadded", "0.8.0-unstable568");
31+
Assert.AreEqual("##myget[buildNumber '0.8.0-unstable568']", message[1]);
32+
}
33+
}

GitVersionTask.Tests/GitVersionTask.Tests.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
<Compile Include="BranchClassifierTests.cs" />
9090
<Compile Include="BranchFinders\DevelopTests.cs" />
9191
<Compile Include="BuildServers\BuildServerBaseTests.cs" />
92+
<Compile Include="BuildServers\MyGetTests.cs" />
9293
<Compile Include="BuildServers\TeamCityTests.cs" />
9394
<Compile Include="BuildServers\ContinuaCiTests.cs" />
9495
<Compile Include="ConfigReaderTests.cs" />

0 commit comments

Comments
 (0)