Skip to content

Commit 51e3795

Browse files
feat: limit builds to 3 separate attempts wo/ auto-retry (#110)
Co-authored-by: raphaelcoeffic <[email protected]>
1 parent 99f780e commit 51e3795

File tree

3 files changed

+9
-14
lines changed

3 files changed

+9
-14
lines changed

artifactory/artifactory.go

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ func (artifactory *Artifactory) restartFailedJob(
128128
To: WaitingForBuild,
129129
})
130130
job.Status = WaitingForBuild
131-
job.BuildAttempts = 0
132131

133132
err := artifactory.BuildJobsRepository.Save(job)
134133
if err != nil {
@@ -147,8 +146,8 @@ func (artifactory *Artifactory) CreateBuildJob(
147146
}
148147

149148
if job != nil {
150-
// forcibly restart completely failed build
151-
if job.Status == BuildError {
149+
// restart failed build until MaxBuildAttemps
150+
if job.Status == BuildError && job.BuildAttempts < MaxBuildAttempts {
152151
return artifactory.restartFailedJob(requesterIP, job)
153152
}
154153
return BuildJobDtoFromModel(job, artifactory.PrefixURL)
@@ -213,15 +212,11 @@ func (artifactory *Artifactory) Build(
213212
})
214213
onBuildFailure := func(err error, build *BuildJobModel) (*BuildJobModel, error) {
215214
build.BuildEndedAt = time.Now()
216-
newStatus := WaitingForBuild
217-
if build.BuildAttempts >= MaxBuildAttempts {
218-
newStatus = BuildError
219-
}
220-
build.Status = newStatus
215+
build.Status = BuildError
221216

222217
build.AuditLogs = append(build.AuditLogs, AuditLogModel{
223218
From: BuildInProgress,
224-
To: newStatus,
219+
To: BuildError,
225220
CreatedAt: time.Now(),
226221
StdOut: recorder.Logs(),
227222
})

artifactory/artifactory_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ func TestCreatesBuildJobWhenBuildExistsInErrorState(t *testing.T) {
190190
assert.NotNil(t, model)
191191

192192
if model != nil {
193-
assert.Equal(t, artifactory.WaitingForBuild, model.Status)
193+
assert.Equal(t, artifactory.BuildError, model.Status)
194194
assert.Equal(t, request.HashTargetAndFlags(), model.BuildFlagsHash)
195195
}
196196
}
@@ -288,7 +288,7 @@ func TestBuildWhenFailingToDownload(t *testing.T) {
288288
assert.Error(t, err, "failed to download")
289289
downloader.AssertNumberOfCalls(t, "Download", 1)
290290
assert.Equal(t, model1.ID.String(), model2.ID.String())
291-
assert.Equal(t, artifactory.WaitingForBuild, model2.Status)
291+
assert.Equal(t, artifactory.BuildError, model2.Status)
292292
assert.Equal(t, int64(1), model2.BuildAttempts)
293293
}
294294

@@ -313,7 +313,7 @@ func TestBuildWhenFailingToBuild(t *testing.T) {
313313
downloader.AssertNumberOfCalls(t, "Download", 1)
314314
builder.AssertNumberOfCalls(t, "Build", 1)
315315
assert.Equal(t, model1.ID.String(), model2.ID.String())
316-
assert.Equal(t, artifactory.WaitingForBuild, model2.Status)
316+
assert.Equal(t, artifactory.BuildError, model2.Status)
317317
assert.Equal(t, int64(1), model2.BuildAttempts)
318318
}
319319

@@ -342,7 +342,7 @@ func TestBuildWhenFailingToUpload(t *testing.T) {
342342
assert.Error(t, err, "failed to upload")
343343

344344
assert.Equal(t, model1.ID.String(), model2.ID.String())
345-
assert.Equal(t, artifactory.WaitingForBuild, model2.Status)
345+
assert.Equal(t, artifactory.BuildError, model2.Status)
346346
assert.Equal(t, int64(1), model2.BuildAttempts)
347347
}
348348

artifactory/model.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const (
2222
type BuildErrorType string
2323

2424
const (
25-
MaxBuildAttempts = 5
25+
MaxBuildAttempts = 3
2626
MaxBuildDuration = time.Minute * 15
2727
)
2828

0 commit comments

Comments
 (0)