Skip to content

Commit 2db190c

Browse files
committed
Nits in previous commit. Fix issue when downloading artifacts when build configuration of dependency does not match the one of the main product.
1 parent cbd7cb2 commit 2db190c

File tree

5 files changed

+35
-10
lines changed

5 files changed

+35
-10
lines changed

src/PostSharp.Engineering.BuildTools/Build/Files/TeamCitySettingsFile.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,6 @@ private static TeamCityBuildConfiguration CreateBuildConfiguration(
396396
TeamCitySourceDependency[] sourceDependencies,
397397
bool isRepoRemoteSsh )
398398
{
399-
List<TeamCityBuildConfiguration> teamCityBuildConfigurations;
400399
var teamCityBuildSteps = new List<TeamCityBuildStep>();
401400

402401
if ( !product.UseDocker )

src/PostSharp.Engineering.BuildTools/Build/Model/Product.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,8 @@ public DockerSpec? DockerSpec
250250
/// MSBuild cannot be used.
251251
/// </summary>
252252
public Version? MSBuildVersion { get; init; }
253-
254-
public string[] ExternalTeamCityBuildTypes { get; init; }
253+
254+
public string[] ExternalTeamCityBuildTypes { get; init; } = [];
255255

256256
public bool TryGetDependency( string name, [NotNullWhen( true )] out ParametrizedDependency? dependency )
257257
{

src/PostSharp.Engineering.BuildTools/Dependencies/DependenciesHelper.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ private static bool DownloadArtifacts(
421421
return false;
422422
}
423423

424-
var artifactsDirectory = dependency.Dependency.GetPrivateArtifactsDirectory( configuration );
424+
var artifactsDirectory = dependency.Dependency.GetPrivateArtifactsDirectory( buildId.BuildConfiguration );
425425

426426
if ( !DownloadDependency(
427427
context,
@@ -506,7 +506,7 @@ private static bool DownloadBuild(
506506
string dependencyName,
507507
string ciBuildTypeId,
508508
int buildNumber,
509-
string artifactsDirectory,
509+
string artifactsPath,
510510
out string restoreDirectory )
511511
{
512512
restoreDirectory = Path.Combine(
@@ -528,7 +528,7 @@ private static bool DownloadBuild(
528528
Directory.CreateDirectory( restoreDirectory );
529529
context.Console.WriteMessage( $"Downloading {dependencyName} build #{buildNumber} of {ciBuildTypeId}" );
530530

531-
if ( !teamCity.TryDownloadArtifacts( context.Console, ciBuildTypeId, buildNumber, artifactsDirectory, restoreDirectory ) )
531+
if ( !teamCity.TryDownloadArtifacts( context.Console, ciBuildTypeId, buildNumber, artifactsPath, restoreDirectory ) )
532532
{
533533
return false;
534534
}
@@ -550,9 +550,9 @@ private static bool DownloadDependency(
550550
string dependencyName,
551551
string ciBuildTypeId,
552552
int buildNumber,
553-
string artifactsDirectory )
553+
string artifactsPath )
554554
{
555-
if ( !DownloadBuild( context, teamCity, dependencyName, ciBuildTypeId, buildNumber, artifactsDirectory, out var restoreDirectory ) )
555+
if ( !DownloadBuild( context, teamCity, dependencyName, ciBuildTypeId, buildNumber, artifactsPath, out var restoreDirectory ) )
556556
{
557557
return false;
558558
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,34 @@
11
// Copyright (c) SharpCrafters s.r.o. See the LICENSE.md file in the root directory of this repository root for details.
22

3+
using PostSharp.Engineering.BuildTools.Build;
4+
using System;
5+
using System.Text.RegularExpressions;
6+
37
namespace PostSharp.Engineering.BuildTools.Dependencies.Model;
48

59
public record CiBuildId( int BuildNumber, string? BuildTypeId ) : ICiBuildSpec
610
{
11+
// This is a hack to guess the build configuration from the BuildTypeId because this information is not available
12+
// when we restore artifacts.
13+
public BuildConfiguration BuildConfiguration
14+
{
15+
get
16+
{
17+
if ( this.BuildTypeId == null )
18+
{
19+
throw new InvalidOperationException( "BuildTypeId is null." );
20+
}
21+
22+
var match = Regex.Match( this.BuildTypeId, "_([A-Z][a-z]+)Build$" );
23+
24+
if ( !match.Success )
25+
{
26+
throw new InvalidOperationException( $"BuildTypeId '{this.BuildTypeId}' cannot be parsed." );
27+
}
28+
29+
return Enum.Parse<BuildConfiguration>( match.Groups[1].Value );
30+
}
31+
}
32+
733
public override string ToString() => $"{this.BuildTypeId}:{this.BuildNumber}";
834
}

src/PostSharp.Engineering.BuildTools/Tools/TeamCity/TeamCityClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public bool TryGetBranchFromBuildNumber( ConsoleHelper console, CiBuildId buildI
128128
}
129129
}
130130

131-
public bool TryDownloadArtifacts( ConsoleHelper console, string buildTypeId, int buildNumber, string artifactsPath, string artifactsDirectory )
131+
public bool TryDownloadArtifacts( ConsoleHelper console, string buildTypeId, int buildNumber, string artifactsPath, string restoreDirectory )
132132
{
133133
IEnumerable<DownloadedFile> GetFiles( string urlOrPath, string targetDirectory )
134134
{
@@ -178,7 +178,7 @@ IEnumerable<DownloadedFile> GetFiles( string urlOrPath, string targetDirectory )
178178
var basePath =
179179
$"/app/rest/builds/defaultFilter:false,buildType:{buildTypeId},number:{buildNumber}/artifacts/children/{artifactsPath.Replace( '\\', '/' )}";
180180

181-
var baseTargetDirectory = Path.Combine( artifactsDirectory, artifactsPath.Replace( '/', Path.DirectorySeparatorChar ) );
181+
var baseTargetDirectory = Path.Combine( restoreDirectory, artifactsPath.Replace( '/', Path.DirectorySeparatorChar ) );
182182

183183
var files = GetFiles( basePath, baseTargetDirectory );
184184

0 commit comments

Comments
 (0)