Skip to content

Commit 167962e

Browse files
committed
More fixes of timeouts.
1 parent 95eaa56 commit 167962e

File tree

4 files changed

+35
-67
lines changed

4 files changed

+35
-67
lines changed

.teamcity/settings.kts

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ object DebugBuild : BuildType({
3838
text("Build.Arguments", "", label = "DockerBuild.ps1 Arguments", description = "Arguments to append to the 'Build' build step.", allowEmpty = true)
3939
param("Build.Timeout", "30")
4040
text("DefaultBranch", "develop/2023.2", label = "Default Branch", description = "The default branch of this build configuration.")
41-
text("Timeout", "30", label = "Time-Out", description = "Timeout, in minutes.", regex = """\d+""", validationMessage = "The timeout has to be an integer number.")
4241
}
4342

4443
vcs {
@@ -65,9 +64,6 @@ object DebugBuild : BuildType({
6564
scriptArgs = "-ImageName postsharpengineering-2023.2 -NoBuildImage test --configuration Debug --buildNumber %build.number% --buildType %system.teamcity.buildType.id% %Build.Arguments% -Timeout %Build.Timeout%"
6665
}
6766
}
68-
failureConditions {
69-
executionTimeoutMin = "%Timeout%".toInt()
70-
}
7167

7268
requirements {
7369
equals("env.BuildAgentType", "docker-win-x64-md")
@@ -106,7 +102,6 @@ object ReleaseBuild : BuildType({
106102
text("Build.Arguments", "", label = "DockerBuild.ps1 Arguments", description = "Arguments to append to the 'Build' build step.", allowEmpty = true)
107103
param("Build.Timeout", "30")
108104
text("DefaultBranch", "develop/2023.2", label = "Default Branch", description = "The default branch of this build configuration.")
109-
text("Timeout", "30", label = "Time-Out", description = "Timeout, in minutes.", regex = """\d+""", validationMessage = "The timeout has to be an integer number.")
110105
}
111106

112107
vcs {
@@ -133,9 +128,6 @@ object ReleaseBuild : BuildType({
133128
scriptArgs = "-ImageName postsharpengineering-2023.2 -NoBuildImage test --configuration Release --buildNumber %build.number% --buildType %system.teamcity.buildType.id% %Build.Arguments% -Timeout %Build.Timeout%"
134129
}
135130
}
136-
failureConditions {
137-
executionTimeoutMin = "%Timeout%".toInt()
138-
}
139131

140132
requirements {
141133
equals("env.BuildAgentType", "docker-win-x64-md")
@@ -165,7 +157,6 @@ object PublicBuild : BuildType({
165157
text("Build.Arguments", "", label = "DockerBuild.ps1 Arguments", description = "Arguments to append to the 'Build' build step.", allowEmpty = true)
166158
param("Build.Timeout", "30")
167159
text("DefaultBranch", "develop/2023.2", label = "Default Branch", description = "The default branch of this build configuration.")
168-
text("Timeout", "30", label = "Time-Out", description = "Timeout, in minutes.", regex = """\d+""", validationMessage = "The timeout has to be an integer number.")
169160
}
170161

171162
vcs {
@@ -192,9 +183,6 @@ object PublicBuild : BuildType({
192183
scriptArgs = "-ImageName postsharpengineering-2023.2 -NoBuildImage test --configuration Public --buildNumber %build.number% --buildType %system.teamcity.buildType.id% %Build.Arguments% -Timeout %Build.Timeout%"
193184
}
194185
}
195-
failureConditions {
196-
executionTimeoutMin = "%Timeout%".toInt()
197-
}
198186

199187
requirements {
200188
equals("env.BuildAgentType", "docker-win-x64-md")
@@ -217,8 +205,8 @@ object PublicDeployment : BuildType({
217205

218206
params {
219207
text("Publish.Arguments", "", label = "DockerBuild.ps1 Arguments", description = "Arguments to append to the 'Publish' build step.", allowEmpty = true)
208+
param("Publish.Timeout", "30")
220209
text("DefaultBranch", "develop/2023.2", label = "Default Branch", description = "The default branch of this build configuration.")
221-
text("Timeout", "30", label = "Time-Out", description = "Timeout, in minutes.", regex = """\d+""", validationMessage = "The timeout has to be an integer number.")
222210
}
223211

224212
vcs {
@@ -242,12 +230,9 @@ object PublicDeployment : BuildType({
242230
path = "DockerBuild.ps1"
243231
}
244232
noProfile = false
245-
scriptArgs = "-ImageName postsharpengineering-2023.2 -NoBuildImage publish --configuration Public %Publish.Arguments%"
233+
scriptArgs = "-ImageName postsharpengineering-2023.2 -NoBuildImage publish --configuration Public %Publish.Arguments% -Timeout %Publish.Timeout%"
246234
}
247235
}
248-
failureConditions {
249-
executionTimeoutMin = "%Timeout%".toInt()
250-
}
251236

252237
requirements {
253238
equals("env.BuildAgentType", "docker-win-x64-md")
@@ -281,8 +266,8 @@ object VersionBump : BuildType({
281266

282267
params {
283268
text("Bump.Arguments", "", label = "DockerBuild.ps1 Arguments", description = "Arguments to append to the 'Bump' build step.", allowEmpty = true)
269+
param("Bump.Timeout", "15")
284270
text("DefaultBranch", "develop/2023.2", label = "Default Branch", description = "The default branch of this build configuration.")
285-
text("Timeout", "15", label = "Time-Out", description = "Timeout, in minutes.", regex = """\d+""", validationMessage = "The timeout has to be an integer number.")
286271
}
287272

288273
vcs {
@@ -306,12 +291,9 @@ object VersionBump : BuildType({
306291
path = "DockerBuild.ps1"
307292
}
308293
noProfile = false
309-
scriptArgs = "-ImageName postsharpengineering-2023.2 -NoBuildImage bump %Bump.Arguments%"
294+
scriptArgs = "-ImageName postsharpengineering-2023.2 -NoBuildImage bump %Bump.Arguments% -Timeout %Bump.Timeout%"
310295
}
311296
}
312-
failureConditions {
313-
executionTimeoutMin = "%Timeout%".toInt()
314-
}
315297

316298
requirements {
317299
equals("env.BuildAgentType", "docker-win-x64-md")

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

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,8 @@ TeamCityBuildStep CreatePublishBuildStep( bool isStandalone = false )
187187
"publish",
188188
$"--configuration {configuration}{(isStandalone ? " --standalone" : "")}",
189189
true,
190-
product.DockerSpec );
190+
product.DockerSpec,
191+
configurationInfo.DeploymentTimeout ?? product.DeploymentTimeout );
191192

192193
if ( configurationInfo.ExportsToTeamCityDeploy )
193194
{
@@ -210,7 +211,6 @@ TeamCityBuildStep CreatePublishBuildStep( bool isStandalone = false )
210211
.Select( d => new TeamCitySnapshotDependency( d.CiConfiguration.DeploymentBuildType!, true ) ) )
211212
.OrderBy( d => d.ObjectId )
212213
.ToArray(),
213-
Timeout = configurationInfo.DeploymentTimeout ?? product.DeploymentTimeout,
214214
IsSshAgentRequired = isRepoRemoteSsh
215215
};
216216

@@ -235,7 +235,6 @@ TeamCityBuildStep CreatePublishBuildStep( bool isStandalone = false )
235235
.Concat( [new TeamCitySnapshotDependency( teamCityBuildConfiguration.ObjectName, false, deployedArtifactRules )] )
236236
.OrderBy( d => d.ObjectId )
237237
.ToArray(),
238-
Timeout = configurationInfo.DeploymentTimeout ?? product.DeploymentTimeout,
239238
IsSshAgentRequired = isRepoRemoteSsh
240239
};
241240

@@ -265,11 +264,17 @@ TeamCityBuildStep CreatePublishBuildStep( bool isStandalone = false )
265264
{
266265
BuildSteps =
267266
[
268-
new TeamCityEngineeringCommandBuildStep( "Swap", "Swap", "swap", $"--configuration {configuration}", true, product.DockerSpec )
267+
new TeamCityEngineeringCommandBuildStep(
268+
"Swap",
269+
"Swap",
270+
"swap",
271+
$"--configuration {configuration}",
272+
true,
273+
product.DockerSpec,
274+
configurationInfo.SwapTimeout ?? product.SwapTimeout )
269275
],
270276
IsDeployment = true,
271-
SnapshotDependencies = swapDependencies.OrderBy( d => d.ObjectId ).ToArray(),
272-
Timeout = configurationInfo.SwapTimeout ?? product.SwapTimeout
277+
SnapshotDependencies = swapDependencies.OrderBy( d => d.ObjectId ).ToArray()
273278
} );
274279
}
275280
}
@@ -292,9 +297,14 @@ TeamCityBuildStep CreatePublishBuildStep( bool isStandalone = false )
292297
{
293298
BuildSteps =
294299
[
295-
new TeamCityEngineeringCommandBuildStep( "Bump", "Bump", "bump", areCustomArgumentsAllowed: true, dockerSpec: product.DockerSpec )
300+
new TeamCityEngineeringCommandBuildStep(
301+
"Bump",
302+
"Bump",
303+
"bump",
304+
areCustomArgumentsAllowed: true,
305+
dockerSpec: product.DockerSpec,
306+
timeout: product.VersionBumpTimeout )
296307
],
297-
Timeout = product.VersionBumpTimeout,
298308
IsSshAgentRequired = isRepoRemoteSsh
299309
} );
300310
}
@@ -323,11 +333,11 @@ TeamCityBuildStep CreatePublishBuildStep( bool isStandalone = false )
323333
"Merge downstream",
324334
"tools git merge-downstream",
325335
areCustomArgumentsAllowed: true,
326-
dockerSpec: product.DockerSpec )
336+
dockerSpec: product.DockerSpec,
337+
timeout: product.DownstreamMergeTimeout )
327338
],
328339
SnapshotDependencies = snapshotDependencies,
329340
BuildTriggers = [new SourceBuildTrigger()],
330-
Timeout = product.DownstreamMergeTimeout,
331341
IsSshAgentRequired = isRepoRemoteSsh
332342
} );
333343
}
@@ -911,7 +921,10 @@ bool TryAddPreOrPostDeploymentBuildConfiguration(
911921
var publicNuGetBuildCiId = $"{consolidatedProjectIdPrefix}{MarkNuGetObjectId( publicBuildObjectName )}";
912922
var publicNuGetDeploymentCiId = $"{consolidatedProjectIdPrefix}{MarkNuGetObjectId( publicDeploymentObjectName )}";
913923

914-
var nuGetPublicDeploymentSteps = new TeamCityBuildStep[] { new TeamCityEngineeringPublishBuildStep( publicConfiguration, product.DockerSpec, null ) };
924+
var nuGetPublicDeploymentSteps = new TeamCityBuildStep[]
925+
{
926+
new TeamCityEngineeringPublishBuildStep( publicConfiguration, product.DockerSpec, product.DeploymentTimeout )
927+
};
915928

916929
// TODO: Only Public builds of dependencies that define version need to be included.
917930
// Here we include all Public builds which will cause download of all artifacts.
@@ -932,10 +945,7 @@ bool TryAddPreOrPostDeploymentBuildConfiguration(
932945
vcsRootId,
933946
product.ResolvedBuildAgentRequirements )
934947
{
935-
BuildSteps = nuGetPublicDeploymentSteps,
936-
SnapshotDependencies = nuGetPublicDeploymentDependencies.ToArray(),
937-
Timeout = product.DeploymentTimeout,
938-
IsDeployment = true
948+
BuildSteps = nuGetPublicDeploymentSteps, SnapshotDependencies = nuGetPublicDeploymentDependencies.ToArray(), IsDeployment = true
939949
} );
940950

941951
var publicDeploymentBuildConfigurations = buildConfigurationsByKind[publicDeploymentObjectName];

src/PostSharp.Engineering.BuildTools/ContinuousIntegration/Model/TeamCityBuildConfiguration.cs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ internal class TeamCityBuildConfiguration
4444

4545
public bool IsDefaultVcsRootUsed { get; init; } = true;
4646

47-
public TimeSpan Timeout { get; init; } = TimeSpan.FromMinutes( 30 );
48-
4947
public TeamCityBuildConfigurationParameter[]? Parameters { get; init; }
5048

5149
public TeamCityBuildConfiguration(
@@ -102,7 +100,6 @@ public void GenerateTeamcityCode( TextWriter writer )
102100

103101
// Add required build steps.
104102
var allBuildSteps = new List<TeamCityBuildStep>();
105-
var totalTimeout = this.Timeout;
106103

107104
for ( var index = 0; index < this.BuildSteps!.Length; index++ )
108105
{
@@ -112,16 +109,14 @@ public void GenerateTeamcityCode( TextWriter writer )
112109

113110
void AddBuildStep( TeamCityBuildStep newStep )
114111
{
115-
totalTimeout += newStep.AdditionalTimeout;
116112
newStep.InsertPrerequisites( allBuildSteps, AddBuildStep );
117113
allBuildSteps.Add( newStep );
118114
}
119115
}
120116

121117
var buildParameters = new List<TeamCityBuildConfigurationParameter>();
122118

123-
buildParameters.AddRange(
124-
allBuildSteps.SelectMany( s => s.BuildConfigurationParameters ?? Enumerable.Empty<TeamCityBuildConfigurationParameter>() ) );
119+
buildParameters.AddRange( allBuildSteps.SelectMany( s => s.BuildConfigurationParameters ) );
125120

126121
buildParameters.Add(
127122
new TeamCityTextBuildConfigurationParameter(
@@ -130,14 +125,6 @@ void AddBuildStep( TeamCityBuildStep newStep )
130125
"The default branch of this build configuration.",
131126
this.DefaultBranch ) );
132127

133-
var timeOutParameter = new TeamCityTextBuildConfigurationParameter(
134-
"Timeout",
135-
"Time-Out",
136-
"Timeout, in minutes.",
137-
$"{(int) totalTimeout.TotalMinutes}" ) { Validation = (@"\d+", "The timeout has to be an integer number.") };
138-
139-
buildParameters.Add( timeOutParameter );
140-
141128
if ( this.Parameters != null )
142129
{
143130
buildParameters.AddRange( this.Parameters );
@@ -200,13 +187,6 @@ void AddBuildStep( TeamCityBuildStep newStep )
200187
writer.WriteLine( @" }" );
201188
}
202189

203-
writer.WriteLine(
204-
"""
205-
failureConditions {
206-
executionTimeoutMin = "%Timeout%".toInt()
207-
}
208-
""" );
209-
210190
if ( !this.IsComposite && this.BuildAgentRequirements != null )
211191
{
212192
writer.WriteLine();

src/PostSharp.Engineering.BuildTools/Search/UpdateSearchProductExtension.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class UpdateSearchProductExtension : ProductExtension
3232

3333
public BuildConfiguration[] BuildConfigurations { get; }
3434

35-
public TimeSpan TimeOutThreshold { get; }
35+
public TimeSpan TimeOut { get; }
3636

3737
public string? CustomBuildConfigurationName { get; }
3838

@@ -72,7 +72,7 @@ public UpdateSearchProductExtension(
7272
this.Source = source;
7373
this.SourceUrl = sourceUrl;
7474
this.BuildConfigurations = buildConfigurations ?? [BuildConfiguration.Public];
75-
this.TimeOutThreshold = timeOutThreshold ?? TimeSpan.FromMinutes( 30 );
75+
this.TimeOut = timeOutThreshold ?? TimeSpan.FromMinutes( 30 );
7676
this.CustomBuildConfigurationName = customBuildConfigurationName;
7777
this.BuildTriggers = buildTriggers;
7878
}
@@ -86,7 +86,7 @@ internal override bool AddTeamcityBuildConfiguration( BuildContext context, List
8686
{
8787
TeamCityBuildStep CreateBuildStep()
8888
{
89-
return new TeamCityEngineeringCommandBuildStep( "UpdateSearch", "Update search", "search update", null, true );
89+
return new TeamCityEngineeringCommandBuildStep( "UpdateSearch", "Update search", "search update", null, true, timeout: this.TimeOut );
9090
}
9191

9292
foreach ( var configuration in this.BuildConfigurations )
@@ -111,11 +111,7 @@ TeamCityBuildStep CreateBuildStep()
111111
vcsRootId,
112112
buildAgentRequirements )
113113
{
114-
BuildSteps = [CreateBuildStep()],
115-
IsDeployment = true,
116-
SnapshotDependencies = dependencies,
117-
Timeout = this.TimeOutThreshold,
118-
BuildTriggers = buildTriggers
114+
BuildSteps = [CreateBuildStep()], IsDeployment = true, SnapshotDependencies = dependencies, BuildTriggers = buildTriggers
119115
};
120116

121117
teamCityBuildConfigurations.Add( teamCityUpdateSearchConfiguration );
@@ -128,7 +124,7 @@ TeamCityBuildStep CreateBuildStep()
128124
context.Product.DependencyDefinition.Branch,
129125
context.Product.DependencyDefinition.VcsRepository.DefaultBranchParameter,
130126
vcsRootId,
131-
buildAgentRequirements ) { BuildSteps = [CreateBuildStep()], IsDeployment = true, Timeout = this.TimeOutThreshold };
127+
buildAgentRequirements ) { BuildSteps = [CreateBuildStep()], IsDeployment = true };
132128

133129
teamCityBuildConfigurations.Add( teamCityUpdateSearchWithoutDependenciesConfiguration );
134130
}

0 commit comments

Comments
 (0)