mirror of
https://github.com/harness/drone.git
synced 2025-05-31 11:43:15 +00:00
ability to fork-exec and existing build
This commit is contained in:
parent
6566d55614
commit
0e5ee44700
@ -147,6 +147,7 @@ func PostBuild(c *gin.Context) {
|
|||||||
|
|
||||||
remote_ := remote.FromContext(c)
|
remote_ := remote.FromContext(c)
|
||||||
repo := session.Repo(c)
|
repo := session.Repo(c)
|
||||||
|
fork := c.DefaultQuery("fork", "false")
|
||||||
|
|
||||||
num, err := strconv.Atoi(c.Param("number"))
|
num, err := strconv.Atoi(c.Param("number"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -203,10 +204,26 @@ func PostBuild(c *gin.Context) {
|
|||||||
|
|
||||||
// must not restart a running build
|
// must not restart a running build
|
||||||
if build.Status == model.StatusPending || build.Status == model.StatusRunning {
|
if build.Status == model.StatusPending || build.Status == model.StatusRunning {
|
||||||
c.AbortWithStatus(409)
|
c.String(409, "Cannot re-start a started build")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// forking the build creates a duplicate of the build
|
||||||
|
// and then executes. This retains prior build history.
|
||||||
|
if forkit, _ := strconv.ParseBool(fork); forkit {
|
||||||
|
build.ID = 0
|
||||||
|
build.Number = 0
|
||||||
|
for _, job := range jobs {
|
||||||
|
job.ID = 0
|
||||||
|
job.NodeID = 0
|
||||||
|
}
|
||||||
|
err := store.CreateBuild(c, build, jobs...)
|
||||||
|
if err != nil {
|
||||||
|
c.String(500, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// todo move this to database tier
|
// todo move this to database tier
|
||||||
// and wrap inside a transaction
|
// and wrap inside a transaction
|
||||||
build.Status = model.StatusPending
|
build.Status = model.StatusPending
|
||||||
@ -218,6 +235,7 @@ func PostBuild(c *gin.Context) {
|
|||||||
job.Started = 0
|
job.Started = 0
|
||||||
job.Finished = 0
|
job.Finished = 0
|
||||||
job.ExitCode = 0
|
job.ExitCode = 0
|
||||||
|
job.NodeID = 0
|
||||||
job.Enqueued = build.Enqueued
|
job.Enqueued = build.Enqueued
|
||||||
store.UpdateJob(c, job)
|
store.UpdateJob(c, job)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user