mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-12-30 10:11:23 +02:00
ability to get last build before N
This commit is contained in:
parent
a63f942c1f
commit
7be93921bd
@ -218,16 +218,21 @@ 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,
|
||||||
Jobs: jobs,
|
BuildPrev: last,
|
||||||
Keys: key,
|
Jobs: jobs,
|
||||||
Netrc: netrc,
|
Keys: key,
|
||||||
Config: string(raw),
|
Netrc: netrc,
|
||||||
Secret: string(sec),
|
Config: string(raw),
|
||||||
|
Secret: string(sec),
|
||||||
System: &model.System{
|
System: &model.System{
|
||||||
Link: httputil.GetURL(c.Request),
|
Link: httputil.GetURL(c.Request),
|
||||||
Plugins: strings.Split(os.Getenv("PLUGIN_FILTER"), " "),
|
Plugins: strings.Split(os.Getenv("PLUGIN_FILTER"), " "),
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user