mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-11-25 19:31:05 +00:00
Additional fixes
This commit is contained in:
parent
ce50e0fd4b
commit
6854d1343e
6 changed files with 87 additions and 89 deletions
|
@ -178,8 +178,8 @@ func main() {
|
||||||
repo.POST("/watch", server.Subscribe)
|
repo.POST("/watch", server.Subscribe)
|
||||||
repo.DELETE("/unwatch", server.Unsubscribe)
|
repo.DELETE("/unwatch", server.Unsubscribe)
|
||||||
|
|
||||||
repo.GET("/builds", server.GetCommits)
|
repo.GET("/builds", server.GetBuilds)
|
||||||
repo.GET("/builds/:number", server.GetCommit)
|
repo.GET("/builds/:number", server.GetBuild)
|
||||||
repo.POST("/builds/:number", server.RunBuild)
|
repo.POST("/builds/:number", server.RunBuild)
|
||||||
repo.DELETE("/builds/:number", server.KillBuild)
|
repo.DELETE("/builds/:number", server.KillBuild)
|
||||||
repo.GET("/logs/:number/:task", server.GetLogs)
|
repo.GET("/logs/:number/:task", server.GetLogs)
|
||||||
|
@ -191,7 +191,8 @@ func main() {
|
||||||
{
|
{
|
||||||
repoExternal.Use(server.SetRepo())
|
repoExternal.Use(server.SetRepo())
|
||||||
|
|
||||||
repoExternal.GET("/pr/:number", server.GetPullRequest)
|
repoExternal.GET("/commits/:sha", server.GetCommit)
|
||||||
|
repoExternal.GET("/pulls/:number", server.GetPullRequest)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,7 +250,8 @@ func main() {
|
||||||
redirects.Use(server.SetDatastore(store))
|
redirects.Use(server.SetDatastore(store))
|
||||||
redirects.Use(server.SetRepo())
|
redirects.Use(server.SetRepo())
|
||||||
|
|
||||||
redirects.GET("/:owner/:name/commit/:sha", server.RedirectSha)
|
redirects.GET("/:owner/:name/commits/:sha", server.RedirectSha)
|
||||||
|
redirects.GET("/:owner/:name/pulls/:number", server.RedirectPullRequest)
|
||||||
}
|
}
|
||||||
|
|
||||||
r.SetHTMLTemplate(index())
|
r.SetHTMLTemplate(index())
|
||||||
|
|
|
@ -199,8 +199,13 @@ func (r *Gitlab) Activate(user *common.User, repo *common.Repo, k *common.Keypai
|
||||||
|
|
||||||
droneUrl := fmt.Sprintf("%s://%s", uri.Scheme, uri.Host)
|
droneUrl := fmt.Sprintf("%s://%s", uri.Scheme, uri.Host)
|
||||||
droneToken := uri.Query().Get("access_token")
|
droneToken := uri.Query().Get("access_token")
|
||||||
|
ssl_verify := strconv.FormatBool(!r.SkipVerify)
|
||||||
|
|
||||||
return client.AddDroneService(id, map[string]string{"token": droneToken, "drone_url": droneUrl})
|
return client.AddDroneService(id, map[string]string{
|
||||||
|
"token": droneToken,
|
||||||
|
"drone_url": droneUrl,
|
||||||
|
"enable_ssl_verification": ssl_verify,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deactivate removes a repository by removing all the post-commit hooks
|
// Deactivate removes a repository by removing all the post-commit hooks
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
//
|
//
|
||||||
// GET /api/repos/:owner/:name/:number
|
// GET /api/repos/:owner/:name/:number
|
||||||
//
|
//
|
||||||
func GetCommit(c *gin.Context) {
|
func GetBuild(c *gin.Context) {
|
||||||
store := ToDatastore(c)
|
store := ToDatastore(c)
|
||||||
repo := ToRepo(c)
|
repo := ToRepo(c)
|
||||||
num, err := strconv.Atoi(c.Params.ByName("number"))
|
num, err := strconv.Atoi(c.Params.ByName("number"))
|
||||||
|
@ -41,12 +41,30 @@ func GetCommit(c *gin.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetCommits accepts a request to retrieve a list
|
||||||
|
// of commits from the datastore for the given repository.
|
||||||
|
//
|
||||||
|
// GET /api/repos/:owner/:name/builds
|
||||||
|
//
|
||||||
|
func GetBuilds(c *gin.Context) {
|
||||||
|
store := ToDatastore(c)
|
||||||
|
repo := ToRepo(c)
|
||||||
|
builds, err := store.BuildList(repo, 20, 0)
|
||||||
|
if err != nil {
|
||||||
|
c.Fail(404, err)
|
||||||
|
} else {
|
||||||
|
c.JSON(200, builds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// GetPullRequest accepts a requests to retvie a pull request
|
// GetPullRequest accepts a requests to retvie a pull request
|
||||||
// from the datastore for the given repository and
|
// from the datastore for the given repository and
|
||||||
// pull request number
|
// pull request number
|
||||||
//
|
//
|
||||||
// GET /api/repos/:owner/:name/pr/:number
|
// GET /api/repos/:owner/:name/pulls/:number
|
||||||
//
|
//
|
||||||
|
// REASON: It required by GitLab, becuase we get only
|
||||||
|
// sha and ref name, but drone uses build numbers
|
||||||
func GetPullRequest(c *gin.Context) {
|
func GetPullRequest(c *gin.Context) {
|
||||||
store := ToDatastore(c)
|
store := ToDatastore(c)
|
||||||
repo := ToRepo(c)
|
repo := ToRepo(c)
|
||||||
|
@ -75,20 +93,46 @@ func GetPullRequest(c *gin.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCommits accepts a request to retrieve a list
|
// GetCommit accepts a requests to retvie a sha and branch
|
||||||
// of commits from the datastore for the given repository.
|
// from the datastore for the given repository and
|
||||||
|
// pull request number
|
||||||
//
|
//
|
||||||
// GET /api/repos/:owner/:name/builds
|
// GET /api/repos/:owner/:name/commits/:sha
|
||||||
//
|
//
|
||||||
func GetCommits(c *gin.Context) {
|
// REASON: It required by GitLab, becuase we get only
|
||||||
|
// sha and ref name, but drone uses build numbers
|
||||||
|
func GetCommit(c *gin.Context) {
|
||||||
|
var branch string
|
||||||
|
|
||||||
store := ToDatastore(c)
|
store := ToDatastore(c)
|
||||||
repo := ToRepo(c)
|
repo := ToRepo(c)
|
||||||
builds, err := store.BuildList(repo, 20, 0)
|
sha := c.Params.ByName("sha")
|
||||||
|
|
||||||
|
// get the token and verify the hook is authorized
|
||||||
|
if c.Request.FormValue("access_token") != hash(repo.FullName, repo.Hash) {
|
||||||
|
c.AbortWithStatus(403)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
branch = c.Request.FormValue("branch")
|
||||||
|
if branch == "" {
|
||||||
|
branch = repo.Branch
|
||||||
|
}
|
||||||
|
|
||||||
|
build, err := store.BuildSha(repo, sha, branch)
|
||||||
|
if err != nil {
|
||||||
|
c.Fail(404, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
build.Jobs, err = store.JobList(build)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Fail(404, err)
|
c.Fail(404, err)
|
||||||
} else {
|
} else {
|
||||||
c.JSON(200, builds)
|
c.JSON(200, build)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetLogs accepts a request to retrieve logs from the
|
// GetLogs accepts a request to retrieve logs from the
|
||||||
|
|
|
@ -11,8 +11,10 @@ import (
|
||||||
// to job from the datastore for the given repository
|
// to job from the datastore for the given repository
|
||||||
// and commit sha
|
// and commit sha
|
||||||
//
|
//
|
||||||
// GET /redirect/:owner/:name/commit/:sha
|
// GET /redirect/:owner/:name/commits/:sha
|
||||||
//
|
//
|
||||||
|
// REASON: It required by GitLab, becuase we get only
|
||||||
|
// sha and ref name, but drone uses build numbers
|
||||||
func RedirectSha(c *gin.Context) {
|
func RedirectSha(c *gin.Context) {
|
||||||
var branch string
|
var branch string
|
||||||
|
|
||||||
|
@ -35,12 +37,15 @@ func RedirectSha(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// RedirectSha accepts a request to retvie a redirect
|
// RedirectPullRequest accepts a request to retvie a redirect
|
||||||
// to job from the datastore for the given repository
|
// to job from the datastore for the given repository
|
||||||
// and pull request number
|
// and pull request number
|
||||||
//
|
//
|
||||||
// GET /redirect/:owner/:name/pr/:number
|
// GET /redirect/:owner/:name/pulls/:number
|
||||||
//
|
//
|
||||||
|
// REASON: It required by GitLab, because we get only
|
||||||
|
// internal merge request id/ref/sha, but drone uses
|
||||||
|
// build numbers
|
||||||
func RedirectPullRequest(c *gin.Context) {
|
func RedirectPullRequest(c *gin.Context) {
|
||||||
store := ToDatastore(c)
|
store := ToDatastore(c)
|
||||||
repo := ToRepo(c)
|
repo := ToRepo(c)
|
||||||
|
|
|
@ -112,6 +112,21 @@ func (db *Buildstore) KillBuilds() error {
|
||||||
return err2
|
return err2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const stmtBuildSelectPullRequestNumber = stmtBuildSelectList + `
|
||||||
|
WHERE build_repo_id = ?
|
||||||
|
AND build_pull_request_number = ?
|
||||||
|
ORDER BY build_number DESC
|
||||||
|
LIMIT 1
|
||||||
|
`
|
||||||
|
|
||||||
|
const stmtBuildSelectSha = stmtBuildSelectList + `
|
||||||
|
WHERE build_repo_id = ?
|
||||||
|
AND build_commit_sha = ?
|
||||||
|
AND build_commit_branch = ?
|
||||||
|
ORDER BY build_number DESC
|
||||||
|
LIMIT 1
|
||||||
|
`
|
||||||
|
|
||||||
// SQL query to retrieve the latest builds across all branches.
|
// SQL query to retrieve the latest builds across all branches.
|
||||||
const buildListQuery = `
|
const buildListQuery = `
|
||||||
SELECT
|
SELECT
|
||||||
|
|
|
@ -596,79 +596,6 @@ WHERE build_repo_id = ?
|
||||||
AND build_number = ?
|
AND build_number = ?
|
||||||
`
|
`
|
||||||
|
|
||||||
const stmtBuildSelectPullRequestNumber = `
|
|
||||||
SELECT
|
|
||||||
build_id
|
|
||||||
,build_repo_id
|
|
||||||
,build_number
|
|
||||||
,build_status
|
|
||||||
,build_started
|
|
||||||
,build_finished
|
|
||||||
,build_commit_sha
|
|
||||||
,build_commit_ref
|
|
||||||
,build_commit_link
|
|
||||||
,build_commit_branch
|
|
||||||
,build_commit_message
|
|
||||||
,build_commit_timestamp
|
|
||||||
,build_commit_remote
|
|
||||||
,build_commit_author_login
|
|
||||||
,build_commit_author_email
|
|
||||||
,build_pull_request_number
|
|
||||||
,build_pull_request_title
|
|
||||||
,build_pull_request_link
|
|
||||||
,build_pull_request_base_sha
|
|
||||||
,build_pull_request_base_ref
|
|
||||||
,build_pull_request_base_link
|
|
||||||
,build_pull_request_base_branch
|
|
||||||
,build_pull_request_base_message
|
|
||||||
,build_pull_request_base_timestamp
|
|
||||||
,build_pull_request_base_remote
|
|
||||||
,build_pull_request_base_author_login
|
|
||||||
,build_pull_request_base_author_email
|
|
||||||
FROM builds
|
|
||||||
WHERE build_repo_id = ?
|
|
||||||
AND build_pull_request_number = ?
|
|
||||||
ORDER BY build_number DESC
|
|
||||||
LIMIT 1
|
|
||||||
`
|
|
||||||
|
|
||||||
const stmtBuildSelectSha = `
|
|
||||||
SELECT
|
|
||||||
build_id
|
|
||||||
,build_repo_id
|
|
||||||
,build_number
|
|
||||||
,build_status
|
|
||||||
,build_started
|
|
||||||
,build_finished
|
|
||||||
,build_commit_sha
|
|
||||||
,build_commit_ref
|
|
||||||
,build_commit_link
|
|
||||||
,build_commit_branch
|
|
||||||
,build_commit_message
|
|
||||||
,build_commit_timestamp
|
|
||||||
,build_commit_remote
|
|
||||||
,build_commit_author_login
|
|
||||||
,build_commit_author_email
|
|
||||||
,build_pull_request_number
|
|
||||||
,build_pull_request_title
|
|
||||||
,build_pull_request_link
|
|
||||||
,build_pull_request_base_sha
|
|
||||||
,build_pull_request_base_ref
|
|
||||||
,build_pull_request_base_link
|
|
||||||
,build_pull_request_base_branch
|
|
||||||
,build_pull_request_base_message
|
|
||||||
,build_pull_request_base_timestamp
|
|
||||||
,build_pull_request_base_remote
|
|
||||||
,build_pull_request_base_author_login
|
|
||||||
,build_pull_request_base_author_email
|
|
||||||
FROM builds
|
|
||||||
WHERE build_repo_id = ?
|
|
||||||
AND build_commit_sha = ?
|
|
||||||
AND build_commit_branch = ?
|
|
||||||
ORDER BY build_number DESC
|
|
||||||
LIMIT 1
|
|
||||||
`
|
|
||||||
|
|
||||||
const stmtBuildSelectCommitBranch = `
|
const stmtBuildSelectCommitBranch = `
|
||||||
SELECT
|
SELECT
|
||||||
build_id
|
build_id
|
||||||
|
|
Loading…
Reference in a new issue