@@ -89,22 +89,31 @@ func (c *Client) DescribeRepo() (*git.RepoInfo, error) {
8989 return repoInfo , nil
9090}
9191
92+ // AddWebhook will update webhook when it exists
93+ // else create a webbhook
9294func (c * Client ) AddWebhook (webhookConfig * git.WebhookConfig ) error {
9395 projectHook , err := c .getWebhook (webhookConfig )
9496 if err != nil {
9597 return err
9698 }
9799 if projectHook != nil {
98- log .Debugf ("gitlab AddWebhook already exist" )
99- return nil
100- }
101- p := & gitlab.AddProjectHookOptions {
102- PushEvents : gitlab .Bool (true ),
103- Token : gitlab .String (webhookConfig .SecretToken ),
104- URL : gitlab .String (webhookConfig .Address ),
105- MergeRequestsEvents : gitlab .Bool (true ),
100+ log .Debugf ("gitlab AddWebhook already exist, update this webhook" )
101+ p := & gitlab.EditProjectHookOptions {
102+ PushEvents : gitlab .Bool (true ),
103+ Token : gitlab .String (webhookConfig .SecretToken ),
104+ URL : gitlab .String (webhookConfig .Address ),
105+ MergeRequestsEvents : gitlab .Bool (true ),
106+ }
107+ _ , _ , err = c .Projects .EditProjectHook (c .GetRepoPath (), projectHook .ID , p )
108+ } else {
109+ p := & gitlab.AddProjectHookOptions {
110+ PushEvents : gitlab .Bool (true ),
111+ Token : gitlab .String (webhookConfig .SecretToken ),
112+ URL : gitlab .String (webhookConfig .Address ),
113+ MergeRequestsEvents : gitlab .Bool (true ),
114+ }
115+ _ , _ , err = c .Projects .AddProjectHook (c .GetRepoPath (), p )
106116 }
107- _ , _ , err = c .Projects .AddProjectHook (c .GetRepoPath (), p )
108117 if err != nil {
109118 return c .newModuleError (err )
110119 }
0 commit comments