in app/registry/update.go [63:115]
func (a *App) registryUpdate(ctx *gin.Context) (router.Response, error) {
userCtx := router.ContextWithUserAccessToken(ctx)
cbService, err := a.Services.Codebase.ServiceForContext(userCtx)
if err != nil {
return nil, errors.Wrap(err, "unable to init service for user context")
}
registryName := ctx.Param("name")
cb, err := cbService.Get(registryName)
if err != nil {
return nil, errors.Wrap(err, "unable to get registry")
}
r := registry{
Name: registryName,
RegistryGitBranch: cb.Spec.DefaultBranch,
Scenario: ScenarioKeyNotRequired,
}
var ur updateRequest
if err := ctx.ShouldBind(&ur); err != nil {
validationErrors, ok := err.(validator.ValidationErrors)
if !ok {
return nil, errors.Wrap(err, "unable to parse registry form")
}
return router.MakeHTMLResponse(200, "registry/edit.html",
gin.H{"page": "registry", "errorsMap": validationErrors, "registry": r, "model": r}), nil
}
if err := a.createMergeRequest(cb, ur.Branch, userCtx, ctx); err != nil {
return nil, errors.Wrap(err, "unable to create merge request")
}
if a.EnableBranchProvisioners {
prov := branchProvisioner(ur.Branch)
cb.Spec.JobProvisioning = &prov
if err := a.Services.Codebase.Update(ctx, cb); err != nil {
return nil, errors.Wrap(err, "unable to update codebase provisioner")
}
if err := a.Services.Jenkins.CreateJobBuildRun(ctx, fmt.Sprintf("ru-create-release-%d", time.Now().Unix()),
fmt.Sprintf("%s/job/Create-release-%s/", r.Name, r.Name), map[string]string{
"RELEASE_NAME": cb.Spec.DefaultBranch,
}); err != nil {
return nil, errors.Wrap(err, "unable to trigger jenkins job build run")
}
}
return router.MakeRedirectResponse(http.StatusFound,
fmt.Sprintf("/admin/registry/view/%s", r.Name)), nil
}