func createRelease()

in internal/commands/create.go [52:91]


func createRelease(ctx *cli.Context, log logrus.FieldLogger, httpClient gitlab.HTTPClient) error {
	projectID := ctx.String(flags.ProjectID)
	serverURL := ctx.String(flags.ServerURL)
	jobToken := ctx.String(flags.JobToken)
	privateToken := ctx.String(flags.PrivateToken)

	l := log.WithFields(logrus.Fields{
		"command":            ctx.Command.Name,
		flags.ServerURL:      serverURL,
		flags.ProjectID:      projectID,
		flags.Name:           ctx.String(flags.Name),
		flags.TagName:        ctx.String(flags.TagName),
		flags.TagMessage:     ctx.String(flags.TagMessage),
		flags.Ref:            ctx.String(flags.Ref),
		flags.CatalogPublish: ctx.Bool(flags.CatalogPublish),
	})

	l.Info("Creating Release...")

	gitlabClient, err := gitlab.New(serverURL, jobToken, privateToken, projectID, httpClient, log)
	if err != nil {
		return fmt.Errorf("failed to create GitLab client: %w", err)
	}

	crr, err := newCreateReleaseReq(ctx, log)
	if err != nil {
		return fmt.Errorf("new CreateReleaseRequest: %w", err)
	}

	release, err := gitlabClient.CreateRelease(ctx.Context, crr)
	if err != nil {
		return fmt.Errorf("failed to create release: %w", err)
	}

	printReleaseOutput(ctx.App.Writer, release, log)

	l.Info("release created successfully!")

	return nil
}