From 26917e0e63456bbddc915d404fce6366bea64088 Mon Sep 17 00:00:00 2001 From: Rick Date: Thu, 5 Dec 2019 12:43:23 +0800 Subject: [PATCH] Support give system property to jenkins.war --- app/cmd/center_start.go | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/app/cmd/center_start.go b/app/cmd/center_start.go index 66598a3..b184d50 100644 --- a/app/cmd/center_start.go +++ b/app/cmd/center_start.go @@ -2,12 +2,13 @@ package cmd import ( "fmt" - "github.com/mitchellh/go-homedir" "net/http" "os" "os/exec" "syscall" + "github.com/mitchellh/go-homedir" + "github.com/jenkins-zh/jenkins-cli/app/i18n" "github.com/spf13/cobra" @@ -21,6 +22,9 @@ type CenterStartOption struct { Context string SetupWizard bool + // comes from folder plugin + ConcurrentIndexing int + Admin string HTTPSEnable bool @@ -29,6 +33,7 @@ type CenterStartOption struct { HTTPSPrivateKey string Environments []string + System []string Download bool Version string @@ -44,8 +49,10 @@ func init() { i18n.T("Port of Jenkins")) centerStartCmd.Flags().StringVarP(¢erStartOption.Context, "context", "", "/", i18n.T("Web context of Jenkins server")) - centerStartCmd.Flags().StringArrayVarP(¢erStartOption.Environments, "", "", nil, + centerStartCmd.Flags().StringArrayVarP(¢erStartOption.Environments, "env", "", nil, i18n.T("Environments for the Jenkins which as key-value format")) + centerStartCmd.Flags().StringArrayVarP(¢erStartOption.System, "sys", "", nil, + i18n.T("System property key-value")) centerStartCmd.Flags().BoolVarP(¢erStartOption.SetupWizard, "setup-wizard", "", true, i18n.T("If you want to show the setup wizard at first start")) centerStartCmd.Flags().BoolVarP(¢erStartOption.Download, "download", "", true, @@ -62,6 +69,9 @@ func init() { centerStartCmd.Flags().StringVarP(¢erStartOption.HTTPSPrivateKey, "https-private", "", "", i18n.T("Private key file path for https")) + centerStartCmd.Flags().IntVarP(¢erStartOption.ConcurrentIndexing, "concurrent-indexing", "", -1, + i18n.T("Concurrent indexing limit, take this value only it is bigger than -1")) + centerStartCmd.Flags().BoolVarP(¢erStartOption.DryRun, "dry-run", "", false, i18n.T("Don't run jenkins.war really")) } @@ -103,7 +113,6 @@ var centerStartCmd = &cobra.Command{ if err == nil { env := os.Environ() env = append(env, fmt.Sprintf("JENKINS_HOME=%s/.jenkins-cli/cache/%s/web", userHome, centerStartOption.Version)) - env = append(env, fmt.Sprintf("jenkins.install.runSetupWizard=%v", centerStartOption.SetupWizard)) if centerStartOption.Environments != nil { for _, item := range centerStartOption.Environments { @@ -112,6 +121,7 @@ var centerStartCmd = &cobra.Command{ } jenkinsWarArgs := []string{"java"} + jenkinsWarArgs = centerStartOption.setSystemProperty(jenkinsWarArgs) jenkinsWarArgs = append(jenkinsWarArgs, "-jar", jenkinsWar) jenkinsWarArgs = append(jenkinsWarArgs, fmt.Sprintf("--httpPort=%d", centerStartOption.Port)) jenkinsWarArgs = append(jenkinsWarArgs, "--argumentsRealm.passwd.admin=admin --argumentsRealm.roles.admin=admin") @@ -130,3 +140,19 @@ var centerStartCmd = &cobra.Command{ return }, } + +func (c *CenterStartOption) setSystemProperty(jenkinsWarArgs []string) []string { + if c.System == nil { + c.System = []string{} + } + + c.System = append(c.System, fmt.Sprintf("jenkins.install.runSetupWizard=%v", c.SetupWizard)) + if c.ConcurrentIndexing > -1 { + c.System = append(c.System, fmt.Sprintf("com.cloudbees.hudson.plugins.folder.computed.ThrottleComputationQueueTaskDispatcher.LIMIT=%d", c.ConcurrentIndexing)) + } + + for _, item := range centerStartOption.System { + jenkinsWarArgs = append(jenkinsWarArgs, fmt.Sprintf("-D%s", item)) + } + return jenkinsWarArgs +} -- GitLab