aboutsummaryrefslogtreecommitdiffstats
path: root/client/go/internal/cli
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-07-13 11:31:38 +0200
committerMartin Polden <mpolden@mpolden.no>2023-07-13 11:35:10 +0200
commitfade5f5f6b764de037243c1182f82e6a4486a16a (patch)
treeb58f23b934a0d477c7e7c54382b92dbe0e1d4bb0 /client/go/internal/cli
parentcd357bf9f6718bf279fa4503b973363842f994b1 (diff)
Add submission options to prod deploy
Diffstat (limited to 'client/go/internal/cli')
-rw-r--r--client/go/internal/cli/cmd/prod.go37
1 files changed, 30 insertions, 7 deletions
diff --git a/client/go/internal/cli/cmd/prod.go b/client/go/internal/cli/cmd/prod.go
index 14fbae68b17..3b37197340f 100644
--- a/client/go/internal/cli/cmd/prod.go
+++ b/client/go/internal/cli/cmd/prod.go
@@ -102,8 +102,17 @@ https://cloud.vespa.ai/en/reference/deployment`,
}
}
+type prodDeployOptions struct {
+ copyCert bool
+ risk int
+ commit string
+ description string
+ authorEmail string
+ sourceURL string
+}
+
func newProdDeployCmd(cli *CLI) *cobra.Command {
- copyCert := false
+ var options prodDeployOptions
cmd := &cobra.Command{
Use: "deploy",
Aliases: []string{"submit"}, // TODO: Remove in Vespa 9
@@ -118,7 +127,9 @@ services.xml.
For more information about production deployments in Vespa Cloud see:
https://cloud.vespa.ai/en/production-deployment
-https://cloud.vespa.ai/en/automated-deployments`,
+https://cloud.vespa.ai/en/automated-deployments
+https://cloud.vespa.ai/en/reference/vespa-cloud-api#submission-properties
+`,
DisableAutoGenTag: true,
SilenceUsage: true,
Example: `$ mvn package # when adding custom Java components
@@ -142,21 +153,33 @@ $ vespa prod deploy`,
if err := verifyTests(cli, pkg); err != nil {
return err
}
- opts := vespa.DeploymentOptions{ApplicationPackage: pkg, Target: target}
- if err := maybeCopyCertificate(copyCert, true, cli, target, pkg); err != nil {
+ if err := maybeCopyCertificate(options.copyCert, true, cli, target, pkg); err != nil {
return err
}
- if err := vespa.Submit(opts); err != nil {
+ deployment := vespa.DeploymentOptions{ApplicationPackage: pkg, Target: target}
+ submission := vespa.Submission{
+ Risk: options.risk,
+ Commit: options.commit,
+ Description: options.description,
+ AuthorEmail: options.authorEmail,
+ SourceURL: options.sourceURL,
+ }
+ if err := vespa.Submit(deployment, submission); err != nil {
return fmt.Errorf("could not deploy application: %w", err)
} else {
cli.printSuccess("Deployed ", color.CyanString(pkg.Path))
log.Printf("See %s for deployment progress\n", color.CyanString(fmt.Sprintf("%s/tenant/%s/application/%s/prod/deployment",
- opts.Target.Deployment().System.ConsoleURL, opts.Target.Deployment().Application.Tenant, opts.Target.Deployment().Application.Application)))
+ deployment.Target.Deployment().System.ConsoleURL, deployment.Target.Deployment().Application.Tenant, deployment.Target.Deployment().Application.Application)))
}
return nil
},
}
- cmd.Flags().BoolVarP(&copyCert, "add-cert", "A", false, `Copy certificate of the configured application to the current application package`)
+ cmd.Flags().BoolVarP(&options.copyCert, "add-cert", "A", false, "Copy certificate of the configured application to the current application package (default false)")
+ cmd.Flags().IntVarP(&options.risk, "risk", "", 0, "The risk score of source code being deployed. 0 to ignore (default 0)")
+ cmd.Flags().StringVarP(&options.commit, "commit", "", "", "Identifier of the source code being deployed. For example a commit hash")
+ cmd.Flags().StringVarP(&options.description, "description", "", "", "Description of the source code being deployed. For example a git commit message")
+ cmd.Flags().StringVarP(&options.authorEmail, "author-email", "", "", "Email of the author of the commit being deployed")
+ cmd.Flags().StringVarP(&options.sourceURL, "source-url", "", "", "URL which points to the source code being deployed. For example the build job running the submission")
return cmd
}