mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-09-19 20:16:12 +00:00
ability to get last build before N
This commit is contained in:
@@ -218,11 +218,16 @@ func PostBuild(c *gin.Context) {
|
|||||||
|
|
||||||
c.JSON(202, build)
|
c.JSON(202, build)
|
||||||
|
|
||||||
|
// get the previous build so taht we can send
|
||||||
|
// on status change notifications
|
||||||
|
last, _ := model.GetBuildLastBefore(db, repo, build.Branch, build.ID)
|
||||||
|
|
||||||
engine_ := context.Engine(c)
|
engine_ := context.Engine(c)
|
||||||
go engine_.Schedule(&engine.Task{
|
go engine_.Schedule(&engine.Task{
|
||||||
User: user,
|
User: user,
|
||||||
Repo: repo,
|
Repo: repo,
|
||||||
Build: build,
|
Build: build,
|
||||||
|
BuildPrev: last,
|
||||||
Jobs: jobs,
|
Jobs: jobs,
|
||||||
Keys: key,
|
Keys: key,
|
||||||
Netrc: netrc,
|
Netrc: netrc,
|
||||||
|
@@ -203,7 +203,7 @@ func PostHook(c *gin.Context) {
|
|||||||
|
|
||||||
// get the previous build so taht we can send
|
// get the previous build so taht we can send
|
||||||
// on status change notifications
|
// on status change notifications
|
||||||
last, _ := model.GetBuildLast(db, repo, build.Branch)
|
last, _ := model.GetBuildLastBefore(db, repo, build.Branch, build.ID)
|
||||||
|
|
||||||
engine_ := context.Engine(c)
|
engine_ := context.Engine(c)
|
||||||
go engine_.Schedule(&engine.Task{
|
go engine_.Schedule(&engine.Task{
|
||||||
|
@@ -66,6 +66,12 @@ func GetBuildLast(db meddler.DB, repo *Repo, branch string) (*Build, error) {
|
|||||||
return build, err
|
return build, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetBuildLastBefore(db meddler.DB, repo *Repo, branch string, number int64) (*Build, error) {
|
||||||
|
var build = new(Build)
|
||||||
|
var err = meddler.QueryRow(db, build, database.Rebind(buildLastBeforeQuery), repo.ID, branch, number)
|
||||||
|
return build, err
|
||||||
|
}
|
||||||
|
|
||||||
func GetBuildList(db meddler.DB, repo *Repo) ([]*Build, error) {
|
func GetBuildList(db meddler.DB, repo *Repo) ([]*Build, error) {
|
||||||
var builds = []*Build{}
|
var builds = []*Build{}
|
||||||
var err = meddler.QueryAll(db, &builds, database.Rebind(buildListQuery), repo.ID)
|
var err = meddler.QueryAll(db, &builds, database.Rebind(buildListQuery), repo.ID)
|
||||||
@@ -125,6 +131,16 @@ ORDER BY build_number DESC
|
|||||||
LIMIT 1
|
LIMIT 1
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const buildLastBeforeQuery = `
|
||||||
|
SELECT *
|
||||||
|
FROM builds
|
||||||
|
WHERE build_repo_id = ?
|
||||||
|
AND build_branch = ?
|
||||||
|
AND build_id < ?
|
||||||
|
ORDER BY build_number DESC
|
||||||
|
LIMIT 1
|
||||||
|
`
|
||||||
|
|
||||||
const buildCommitQuery = `
|
const buildCommitQuery = `
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM builds
|
FROM builds
|
||||||
|
@@ -158,7 +158,7 @@ func TestBuild(t *testing.T) {
|
|||||||
g.Assert(build2.Branch).Equal(getbuild.Branch)
|
g.Assert(build2.Branch).Equal(getbuild.Branch)
|
||||||
})
|
})
|
||||||
|
|
||||||
g.It("Should Get a Build by Commit", func() {
|
g.It("Should Get the last Build", func() {
|
||||||
build1 := &Build{
|
build1 := &Build{
|
||||||
RepoID: 1,
|
RepoID: 1,
|
||||||
Status: StatusFailure,
|
Status: StatusFailure,
|
||||||
@@ -185,6 +185,41 @@ func TestBuild(t *testing.T) {
|
|||||||
g.Assert(build2.Commit).Equal(getbuild.Commit)
|
g.Assert(build2.Commit).Equal(getbuild.Commit)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
g.It("Should Get the last Build Before Build N", func() {
|
||||||
|
build1 := &Build{
|
||||||
|
RepoID: 1,
|
||||||
|
Status: StatusFailure,
|
||||||
|
Branch: "master",
|
||||||
|
Commit: "85f8c029b902ed9400bc600bac301a0aadb144ac",
|
||||||
|
}
|
||||||
|
build2 := &Build{
|
||||||
|
RepoID: 1,
|
||||||
|
Status: StatusSuccess,
|
||||||
|
Branch: "master",
|
||||||
|
Commit: "85f8c029b902ed9400bc600bac301a0aadb144aa",
|
||||||
|
}
|
||||||
|
build3 := &Build{
|
||||||
|
RepoID: 1,
|
||||||
|
Status: StatusRunning,
|
||||||
|
Branch: "master",
|
||||||
|
Commit: "85f8c029b902ed9400bc600bac301a0aadb144aa",
|
||||||
|
}
|
||||||
|
err1 := CreateBuild(db, build1, []*Job{}...)
|
||||||
|
err2 := CreateBuild(db, build2, []*Job{}...)
|
||||||
|
err3 := CreateBuild(db, build3, []*Job{}...)
|
||||||
|
getbuild, err4 := GetBuildLastBefore(db, &Repo{ID: 1}, build3.Branch, build3.ID)
|
||||||
|
g.Assert(err1 == nil).IsTrue()
|
||||||
|
g.Assert(err2 == nil).IsTrue()
|
||||||
|
g.Assert(err3 == nil).IsTrue()
|
||||||
|
g.Assert(err4 == nil).IsTrue()
|
||||||
|
g.Assert(build2.ID).Equal(getbuild.ID)
|
||||||
|
g.Assert(build2.RepoID).Equal(getbuild.RepoID)
|
||||||
|
g.Assert(build2.Number).Equal(getbuild.Number)
|
||||||
|
g.Assert(build2.Status).Equal(getbuild.Status)
|
||||||
|
g.Assert(build2.Branch).Equal(getbuild.Branch)
|
||||||
|
g.Assert(build2.Commit).Equal(getbuild.Commit)
|
||||||
|
})
|
||||||
|
|
||||||
g.It("Should get recent Builds", func() {
|
g.It("Should get recent Builds", func() {
|
||||||
build1 := &Build{
|
build1 := &Build{
|
||||||
RepoID: 1,
|
RepoID: 1,
|
||||||
|
Reference in New Issue
Block a user