webhook: use hook provided ssh url for cloning
Additionally don't save a CloneURL field inside the project type. If in future some git source doesn't provide a clone url we could just calculate it from project.RepoPath or call the remote api to retrieve it.
This commit is contained in:
parent
782750e51e
commit
ca1d837ecd
|
@ -103,6 +103,7 @@ func webhookDataFromPush(hook *pushHook) (*types.WebhookData, error) {
|
|||
// common data
|
||||
whd := &types.WebhookData{
|
||||
CommitSHA: hook.After,
|
||||
SSHURL: hook.Repo.SSHURL,
|
||||
Ref: hook.Ref,
|
||||
CompareLink: hook.Compare,
|
||||
CommitLink: fmt.Sprintf("%s/commit/%s", hook.Repo.URL, hook.After),
|
||||
|
@ -141,9 +142,10 @@ func webhookDataFromPullRequest(hook *pullRequestHook) *types.WebhookData {
|
|||
if sender == "" {
|
||||
sender = hook.Sender.Login
|
||||
}
|
||||
build := &types.WebhookData{
|
||||
whd := &types.WebhookData{
|
||||
Event: types.WebhookEventPullRequest,
|
||||
CommitSHA: hook.PullRequest.Head.Sha,
|
||||
SSHURL: hook.Repo.SSHURL,
|
||||
Ref: fmt.Sprintf("refs/pull/%d/head", hook.Number),
|
||||
CommitLink: fmt.Sprintf("%s/commit/%s", hook.Repo.URL, hook.PullRequest.Head.Sha),
|
||||
Branch: hook.PullRequest.Base.Ref,
|
||||
|
@ -157,5 +159,5 @@ func webhookDataFromPullRequest(hook *pullRequestHook) *types.WebhookData {
|
|||
WebURL: hook.Repo.URL,
|
||||
},
|
||||
}
|
||||
return build
|
||||
return whd
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ type pushHook struct {
|
|||
FullName string `json:"full_name"`
|
||||
URL string `json:"html_url"`
|
||||
Private bool `json:"private"`
|
||||
SSHURL string `json:"ssh_url"`
|
||||
Owner struct {
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email"`
|
||||
|
@ -86,6 +87,7 @@ type pullRequestHook struct {
|
|||
FullName string `json:"full_name"`
|
||||
URL string `json:"html_url"`
|
||||
Private bool `json:"private"`
|
||||
SSHURL string `json:"ssh_url"`
|
||||
Owner struct {
|
||||
ID int64 `json:"id"`
|
||||
Username string `json:"username"`
|
||||
|
@ -105,6 +107,7 @@ type pullRequestHook struct {
|
|||
FullName string `json:"full_name"`
|
||||
URL string `json:"html_url"`
|
||||
Private bool `json:"private"`
|
||||
SSHURL string `json:"ssh_url"`
|
||||
Owner struct {
|
||||
ID int64 `json:"id"`
|
||||
Username string `json:"username"`
|
||||
|
@ -121,6 +124,7 @@ type pullRequestHook struct {
|
|||
FullName string `json:"full_name"`
|
||||
URL string `json:"html_url"`
|
||||
Private bool `json:"private"`
|
||||
SSHURL string `json:"ssh_url"`
|
||||
Owner struct {
|
||||
ID int64 `json:"id"`
|
||||
Username string `json:"username"`
|
||||
|
|
|
@ -106,6 +106,7 @@ func webhookDataFromPush(hook *pushHook) (*types.WebhookData, error) {
|
|||
// common data
|
||||
whd := &types.WebhookData{
|
||||
CommitSHA: hook.After,
|
||||
SSHURL: hook.Project.SSHURL,
|
||||
Ref: hook.Ref,
|
||||
CommitLink: hook.Commits[0].URL,
|
||||
//CompareLink: hook.Compare,
|
||||
|
@ -153,6 +154,7 @@ func webhookDataFromPullRequest(hook *pullRequestHook) *types.WebhookData {
|
|||
build := &types.WebhookData{
|
||||
Event: types.WebhookEventPullRequest,
|
||||
CommitSHA: hook.ObjectAttributes.LastCommit.ID,
|
||||
SSHURL: hook.Project.SSHURL,
|
||||
Ref: fmt.Sprintf("refs/merge-requests/%d/head", hook.ObjectAttributes.Iid),
|
||||
//CommitLink: fmt.Sprintf("%s/commit/%s", hook.Repo.URL, hook.PullRequest.Head.Sha),
|
||||
CommitLink: hook.ObjectAttributes.LastCommit.URL,
|
||||
|
|
|
@ -73,9 +73,6 @@ func (c *CommandHandler) CreateProject(ctx context.Context, req *CreateProjectRe
|
|||
return nil, errors.Wrapf(err, "failed to get repository info from gitsource")
|
||||
}
|
||||
|
||||
sshCloneURL := repo.SSHCloneURL
|
||||
c.log.Infof("sshCloneURL: %s", sshCloneURL)
|
||||
|
||||
c.log.Infof("generating ssh key pairs")
|
||||
privateKey, _, err := util.GenSSHKeyPair(4096)
|
||||
if err != nil {
|
||||
|
@ -97,7 +94,6 @@ func (c *CommandHandler) CreateProject(ctx context.Context, req *CreateProjectRe
|
|||
LinkedAccountID: la.ID,
|
||||
RepositoryID: repo.ID,
|
||||
RepositoryPath: req.RepoPath,
|
||||
RepositoryCloneURL: sshCloneURL,
|
||||
SkipSSHHostKeyCheck: req.SkipSSHHostKeyCheck,
|
||||
SSHPrivateKey: string(privateKey),
|
||||
}
|
||||
|
|
|
@ -168,7 +168,6 @@ func (h *webhooksHandler) handleWebhook(r *http.Request) (int, string, error) {
|
|||
}
|
||||
|
||||
sshPrivKey = project.SSHPrivateKey
|
||||
cloneURL = project.RepositoryCloneURL
|
||||
skipSSHHostKeyCheck = project.SkipSSHHostKeyCheck
|
||||
runType = types.RunTypeProject
|
||||
webhookData, err = gitSource.ParseWebhook(r)
|
||||
|
@ -184,6 +183,8 @@ func (h *webhooksHandler) handleWebhook(r *http.Request) (int, string, error) {
|
|||
|
||||
webhookData.ProjectID = projectID
|
||||
|
||||
cloneURL = webhookData.SSHURL
|
||||
|
||||
// get project variables
|
||||
pvars, _, err := h.configstoreClient.GetProjectVariables(ctx, project.ID, true)
|
||||
if err != nil {
|
||||
|
|
|
@ -153,8 +153,6 @@ type Project struct {
|
|||
// do this but gitlab can and github has an hidden api to do this)
|
||||
RepositoryPath string `json:"repository_path,omitempty"`
|
||||
|
||||
RepositoryCloneURL string `json:"repository_clone_url,omitempty"`
|
||||
|
||||
LinkedAccountID string `json:"linked_account_id,omitempty"`
|
||||
|
||||
SSHPrivateKey string `json:"ssh_private_key,omitempty"` // PEM Encoded private key
|
||||
|
|
|
@ -32,9 +32,10 @@ const (
|
|||
type WebhookData struct {
|
||||
Event WebhookEvent `json:"event,omitempty"`
|
||||
ProjectID string `json:"project_id,omitempty"`
|
||||
SSHURL string `json:"ssh_url"`
|
||||
|
||||
CompareLink string `json:"compare_link,omitempty"` // Pimray link to source. It can be the commit
|
||||
CommitLink string `json:"commit_link,omitempty"` // Pimray link to source. It can be the commit
|
||||
CompareLink string `json:"compare_link,omitempty"` // Compare link to remote git source
|
||||
CommitLink string `json:"commit_link,omitempty"` // Commit link to remote git source
|
||||
CommitSHA string `json:"commit_sha,omitempty"` // commit SHA (SHA1 but also future SHA like SHA256)
|
||||
Ref string `json:"ref,omitempty"` // Ref containing the commit SHA
|
||||
Message string `json:"message,omitempty"` // Message to use (Push last commit message summary, PR title, Tag message etc...)
|
||||
|
|
Loading…
Reference in New Issue