| 
									
										
										
										
											2022-07-28 22:11:22 +08:00
										 |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"log" | 
					
						
							|  |  |  | 	"os" | 
					
						
							| 
									
										
										
										
											2022-08-09 14:43:28 +08:00
										 |  |  | 	"strings" | 
					
						
							| 
									
										
										
										
											2022-07-28 22:11:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-09 14:43:28 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/build/docker" | 
					
						
							| 
									
										
										
										
											2022-07-28 22:11:22 +08:00
										 |  |  | 	"github.com/urfave/cli/v2" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func main() { | 
					
						
							|  |  |  | 	app := cli.NewApp() | 
					
						
							|  |  |  | 	app.Commands = cli.Commands{ | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			Name:      "build-backend", | 
					
						
							|  |  |  | 			Usage:     "Build one or more variants of back-end binaries", | 
					
						
							|  |  |  | 			ArgsUsage: "[version]", | 
					
						
							|  |  |  | 			Action:    ArgCountWrapper(1, BuildBackend), | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&jobsFlag, | 
					
						
							|  |  |  | 				&variantsFlag, | 
					
						
							|  |  |  | 				&editionFlag, | 
					
						
							|  |  |  | 				&buildIDFlag, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-07 01:09:08 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:      "build-frontend-packages", | 
					
						
							|  |  |  | 			Usage:     "Build front-end packages", | 
					
						
							|  |  |  | 			ArgsUsage: "[version]", | 
					
						
							|  |  |  | 			Action:    BuildFrontendPackages, | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&jobsFlag, | 
					
						
							|  |  |  | 				&editionFlag, | 
					
						
							|  |  |  | 				&buildIDFlag, | 
					
						
							|  |  |  | 				&noInstallDepsFlag, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-02 23:02:10 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:   "e2e-tests", | 
					
						
							|  |  |  | 			Usage:  "Run Grafana e2e tests", | 
					
						
							|  |  |  | 			Action: EndToEndTests, | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&triesFlag, | 
					
						
							|  |  |  | 				&cli.IntFlag{ | 
					
						
							|  |  |  | 					Name:  "port", | 
					
						
							|  |  |  | 					Value: 3001, | 
					
						
							|  |  |  | 					Usage: "Specify the server port", | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 				&cli.StringFlag{ | 
					
						
							|  |  |  | 					Name:  "suite", | 
					
						
							|  |  |  | 					Usage: "Specify the end-to-end tests suite to be used", | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 				&cli.StringFlag{ | 
					
						
							|  |  |  | 					Name:  "host", | 
					
						
							|  |  |  | 					Value: "grafana-server", | 
					
						
							|  |  |  | 					Usage: "Specify the server host", | 
					
						
							|  |  |  | 				}, | 
					
						
							| 
									
										
										
										
											2022-11-08 18:27:54 +08:00
										 |  |  | 				&cli.StringFlag{ | 
					
						
							|  |  |  | 					Name:  "video", | 
					
						
							|  |  |  | 					Value: "true", | 
					
						
							|  |  |  | 					Usage: "Specify if videos should be recorded", | 
					
						
							|  |  |  | 				}, | 
					
						
							| 
									
										
										
										
											2022-09-02 23:02:10 +08:00
										 |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-08-10 22:29:51 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:      "build-frontend", | 
					
						
							|  |  |  | 			Usage:     "Build front-end artifacts", | 
					
						
							|  |  |  | 			ArgsUsage: "[version]", | 
					
						
							|  |  |  | 			Action:    ArgCountWrapper(1, BuildFrontend), | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&jobsFlag, | 
					
						
							|  |  |  | 				&editionFlag, | 
					
						
							|  |  |  | 				&buildIDFlag, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-08-09 14:43:28 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:   "build-docker", | 
					
						
							|  |  |  | 			Usage:  "Build Grafana Docker images", | 
					
						
							|  |  |  | 			Action: ArgCountWrapper(1, BuildDocker), | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&jobsFlag, | 
					
						
							|  |  |  | 				&editionFlag, | 
					
						
							|  |  |  | 				&cli.BoolFlag{ | 
					
						
							|  |  |  | 					Name:  "ubuntu", | 
					
						
							|  |  |  | 					Usage: "Use Ubuntu base image", | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 				&cli.BoolFlag{ | 
					
						
							|  |  |  | 					Name:  "shouldSave", | 
					
						
							|  |  |  | 					Usage: "Should save docker image to tarball", | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 				&cli.StringFlag{ | 
					
						
							|  |  |  | 					Name:  "archs", | 
					
						
							|  |  |  | 					Value: strings.Join(docker.AllArchs, ","), | 
					
						
							|  |  |  | 					Usage: "Comma separated architectures to build", | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-11-18 21:37:18 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:   "upload-cdn", | 
					
						
							|  |  |  | 			Usage:  "Upload public/* to a cdn bucket", | 
					
						
							|  |  |  | 			Action: UploadCDN, | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&editionFlag, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-08-05 00:39:36 +08:00
										 |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2022-08-08 23:36:13 +08:00
										 |  |  | 			Name:   "shellcheck", | 
					
						
							|  |  |  | 			Usage:  "Run shellcheck on shell scripts", | 
					
						
							|  |  |  | 			Action: Shellcheck, | 
					
						
							| 
									
										
										
										
											2022-08-09 14:43:28 +08:00
										 |  |  | 		}, | 
					
						
							|  |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2022-08-05 00:39:36 +08:00
										 |  |  | 			Name:   "build-plugins", | 
					
						
							|  |  |  | 			Usage:  "Build internal plug-ins", | 
					
						
							|  |  |  | 			Action: ArgCountWrapper(1, BuildInternalPlugins), | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&jobsFlag, | 
					
						
							|  |  |  | 				&editionFlag, | 
					
						
							|  |  |  | 				&signingAdminFlag, | 
					
						
							|  |  |  | 				&signFlag, | 
					
						
							|  |  |  | 				&noInstallDepsFlag, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-13 02:28:08 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:      "publish-metrics", | 
					
						
							|  |  |  | 			Usage:     "Publish a set of metrics from stdin", | 
					
						
							|  |  |  | 			ArgsUsage: "<api-key>", | 
					
						
							|  |  |  | 			Action:    ArgCountWrapper(1, PublishMetrics), | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-14 13:59:18 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:   "verify-drone", | 
					
						
							|  |  |  | 			Usage:  "Verify Drone configuration", | 
					
						
							|  |  |  | 			Action: VerifyDrone, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-13 18:26:24 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:   "export-version", | 
					
						
							|  |  |  | 			Usage:  "Exports version in dist/grafana.version", | 
					
						
							|  |  |  | 			Action: ExportVersion, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-24 00:49:07 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:      "package", | 
					
						
							|  |  |  | 			Usage:     "Package one or more Grafana variants", | 
					
						
							|  |  |  | 			ArgsUsage: "[version]", | 
					
						
							|  |  |  | 			Action:    ArgCountWrapper(1, Package), | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&jobsFlag, | 
					
						
							|  |  |  | 				&variantsFlag, | 
					
						
							|  |  |  | 				&editionFlag, | 
					
						
							|  |  |  | 				&buildIDFlag, | 
					
						
							|  |  |  | 				&signFlag, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-15 16:06:43 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:   "store-storybook", | 
					
						
							|  |  |  | 			Usage:  "Integrity check for storybook build", | 
					
						
							|  |  |  | 			Action: StoreStorybook, | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&cli.StringFlag{ | 
					
						
							|  |  |  | 					Name:  "deployment", | 
					
						
							|  |  |  | 					Usage: "Kind of deployment (e.g. canary/latest)", | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-11-18 23:22:14 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:   "upload-packages", | 
					
						
							|  |  |  | 			Usage:  "Upload Grafana packages", | 
					
						
							|  |  |  | 			Action: UploadPackages, | 
					
						
							|  |  |  | 			Flags: []cli.Flag{ | 
					
						
							|  |  |  | 				&jobsFlag, | 
					
						
							|  |  |  | 				&editionFlag, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-19 16:19:31 +08:00
										 |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2022-09-19 22:17:56 +08:00
										 |  |  | 			Name:  "artifacts", | 
					
						
							|  |  |  | 			Usage: "Handle Grafana artifacts", | 
					
						
							| 
									
										
										
										
											2022-09-19 16:19:31 +08:00
										 |  |  | 			Subcommands: cli.Commands{ | 
					
						
							|  |  |  | 				{ | 
					
						
							| 
									
										
										
										
											2022-09-19 22:17:56 +08:00
										 |  |  | 					Name:  "docker", | 
					
						
							|  |  |  | 					Usage: "Handle Grafana Docker images", | 
					
						
							|  |  |  | 					Subcommands: cli.Commands{ | 
					
						
							|  |  |  | 						{ | 
					
						
							|  |  |  | 							Name:      "fetch", | 
					
						
							|  |  |  | 							Usage:     "Fetch Grafana Docker images", | 
					
						
							|  |  |  | 							ArgsUsage: "[version]", | 
					
						
							|  |  |  | 							Action:    ArgCountWrapper(1, FetchImages), | 
					
						
							|  |  |  | 							Flags: []cli.Flag{ | 
					
						
							|  |  |  | 								&editionFlag, | 
					
						
							|  |  |  | 							}, | 
					
						
							|  |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2022-11-22 02:06:00 +08:00
										 |  |  | 						{ | 
					
						
							|  |  |  | 							Name:      "publish-enterprise2", | 
					
						
							|  |  |  | 							Usage:     "Handle Grafana Enterprise2 Docker images", | 
					
						
							|  |  |  | 							ArgsUsage: "[version]", | 
					
						
							|  |  |  | 							Action:    Enterprise2, | 
					
						
							|  |  |  | 							Flags: []cli.Flag{ | 
					
						
							|  |  |  | 								&cli.StringFlag{ | 
					
						
							|  |  |  | 									Name:  "dockerhub-repo", | 
					
						
							|  |  |  | 									Usage: "DockerHub repo to push images", | 
					
						
							|  |  |  | 								}, | 
					
						
							|  |  |  | 							}, | 
					
						
							|  |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2022-09-19 16:19:31 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-09-29 19:32:42 +08:00
										 |  |  | 		{ | 
					
						
							|  |  |  | 			Name:  "publish", | 
					
						
							|  |  |  | 			Usage: "Publish packages to Grafana com and repositories", | 
					
						
							|  |  |  | 			Subcommands: cli.Commands{ | 
					
						
							| 
									
										
										
										
											2022-10-03 19:14:24 +08:00
										 |  |  | 				{ | 
					
						
							|  |  |  | 					Name:   "grafana-com", | 
					
						
							|  |  |  | 					Usage:  "Publish packages to grafana.com", | 
					
						
							|  |  |  | 					Action: GrafanaCom, | 
					
						
							|  |  |  | 					Flags: []cli.Flag{ | 
					
						
							|  |  |  | 						&editionFlag, | 
					
						
							|  |  |  | 						&buildIDFlag, | 
					
						
							|  |  |  | 						&dryRunFlag, | 
					
						
							|  |  |  | 						&cli.StringFlag{ | 
					
						
							|  |  |  | 							Name:  "src-bucket", | 
					
						
							|  |  |  | 							Value: "grafana-downloads", | 
					
						
							|  |  |  | 							Usage: "Google Cloud Storage bucket", | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							| 
									
										
										
										
											2022-10-20 22:11:53 +08:00
										 |  |  | 				{ | 
					
						
							|  |  |  | 					Name:   "github", | 
					
						
							|  |  |  | 					Usage:  "Publish packages to GitHub releases", | 
					
						
							| 
									
										
										
										
											2022-11-23 00:04:14 +08:00
										 |  |  | 					Action: PublishGithub, | 
					
						
							| 
									
										
										
										
											2022-10-20 22:11:53 +08:00
										 |  |  | 					Flags: []cli.Flag{ | 
					
						
							|  |  |  | 						&dryRunFlag, | 
					
						
							|  |  |  | 						&cli.StringFlag{ | 
					
						
							|  |  |  | 							Name:     "path", | 
					
						
							|  |  |  | 							Required: true, | 
					
						
							|  |  |  | 							Usage:    "Path to the asset to be published", | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 						&cli.StringFlag{ | 
					
						
							|  |  |  | 							Name:     "repo", | 
					
						
							|  |  |  | 							Required: true, | 
					
						
							|  |  |  | 							Usage:    "GitHub repository", | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 						&cli.StringFlag{ | 
					
						
							|  |  |  | 							Name:  "tag", | 
					
						
							| 
									
										
										
										
											2022-11-23 00:04:14 +08:00
										 |  |  | 							Usage: "Release tag (default from metadata)", | 
					
						
							| 
									
										
										
										
											2022-10-20 22:11:53 +08:00
										 |  |  | 						}, | 
					
						
							|  |  |  | 						&cli.BoolFlag{ | 
					
						
							|  |  |  | 							Name:  "create", | 
					
						
							|  |  |  | 							Usage: "Create release if it doesn't exist", | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							| 
									
										
										
										
											2022-11-23 00:04:14 +08:00
										 |  |  | 				{ | 
					
						
							|  |  |  | 					Name:   "aws", | 
					
						
							|  |  |  | 					Usage:  "Publish image to AWS Marketplace releases", | 
					
						
							|  |  |  | 					Action: PublishAwsMarketplace, | 
					
						
							|  |  |  | 					Flags: []cli.Flag{ | 
					
						
							|  |  |  | 						&dryRunFlag, | 
					
						
							|  |  |  | 						&cli.StringFlag{ | 
					
						
							|  |  |  | 							Name:  "version", | 
					
						
							|  |  |  | 							Usage: "Release version (default from metadata)", | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 						&cli.StringFlag{ | 
					
						
							|  |  |  | 							Name:     "image", | 
					
						
							|  |  |  | 							Required: true, | 
					
						
							|  |  |  | 							Usage:    "Name of the image to be released", | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 						&cli.StringFlag{ | 
					
						
							|  |  |  | 							Name:     "repo", | 
					
						
							|  |  |  | 							Required: true, | 
					
						
							|  |  |  | 							Usage:    "AWS Marketplace ECR repository", | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 						&cli.StringFlag{ | 
					
						
							|  |  |  | 							Name:     "product", | 
					
						
							|  |  |  | 							Required: true, | 
					
						
							|  |  |  | 							Usage:    "AWS Marketplace product identifier", | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							| 
									
										
										
										
											2022-09-29 19:32:42 +08:00
										 |  |  | 			}, | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2022-07-28 22:11:22 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if err := app.Run(os.Args); err != nil { | 
					
						
							|  |  |  | 		log.Fatalln(err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |