github.com/saucelabs/saucectl@v0.175.1/internal/cmd/ini/imagerunner.go (about) 1 package ini 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/fatih/color" 8 "github.com/rs/zerolog/log" 9 cmds "github.com/saucelabs/saucectl/internal/cmd" 10 "github.com/saucelabs/saucectl/internal/config" 11 "github.com/saucelabs/saucectl/internal/imagerunner" 12 "github.com/saucelabs/saucectl/internal/segment" 13 "github.com/saucelabs/saucectl/internal/usage" 14 "github.com/spf13/cobra" 15 "golang.org/x/text/cases" 16 "golang.org/x/text/language" 17 ) 18 19 func ImageRunnerCmd() *cobra.Command { 20 cfg := &initConfig{ 21 frameworkName: imagerunner.Kind, 22 } 23 24 cmd := &cobra.Command{ 25 Use: "imagerunner", 26 Short: "Bootstrap an Image Runner (Sauce Orchestrate) project.", 27 SilenceUsage: true, 28 Run: func(cmd *cobra.Command, args []string) { 29 tracker := segment.DefaultTracker 30 31 go func() { 32 tracker.Collect( 33 cases.Title(language.English).String(cmds.FullName(cmd)), 34 usage.Properties{}.SetFlags(cmd.Flags()), 35 ) 36 _ = tracker.Close() 37 }() 38 39 err := Run(cmd, cfg) 40 if err != nil { 41 log.Err(err).Msg("failed to execute init command") 42 os.Exit(1) 43 } 44 }, 45 } 46 47 cmd.Flags().StringVar(&cfg.dockerImage, "image", "", "Docker image to use.") 48 cmd.Flags().StringVar(&cfg.workload, "workload", "", "Type of work performed. Options: 'webdriver', 'other'.") 49 cmd.Flags().StringVar(&cfg.artifactWhenStr, "artifacts-when", "fail", "When to download artifacts.") 50 51 return cmd 52 } 53 54 func configureImageRunner(cfg *initConfig) interface{} { 55 return imagerunner.Project{ 56 TypeDef: config.TypeDef{ 57 APIVersion: imagerunner.APIVersion, 58 Kind: imagerunner.Kind, 59 }, 60 Sauce: config.SauceConfig{ 61 Region: cfg.region, 62 }, 63 Suites: []imagerunner.Suite{ 64 { 65 Name: fmt.Sprintf("imagerunner - %s", cfg.dockerImage), 66 Image: cfg.dockerImage, 67 ImagePullAuth: imagerunner.ImagePullAuth{ 68 User: "${DOCKER_USERNAME}", 69 Token: "${DOCKER_PASSWORD}", 70 }, 71 Workload: cfg.workload, 72 }, 73 }, 74 Artifacts: config.Artifacts{ 75 Download: config.ArtifactDownload{ 76 When: cfg.artifactWhen, 77 Directory: "./artifacts", 78 Match: []string{"*"}, 79 }, 80 }, 81 } 82 } 83 84 func displayExtraInfoImageRunner() { 85 fmt.Println() 86 color.HiGreen("Before running your tests, you need to set the following environment variables:") 87 color.Green(" - DOCKER_USERNAME") 88 color.Green(" - DOCKER_PASSWORD") 89 fmt.Println() 90 }