diff --git a/app/cmd/job_log.go b/app/cmd/job_log.go index fb9e1d25c05325e70f2bca71a80074f9050b86e1..17ea83b41f0f35fc8dab2438c35a59e701844f36 100644 --- a/app/cmd/job_log.go +++ b/app/cmd/job_log.go @@ -9,12 +9,14 @@ import ( ) type JobLogOption struct { + History int } var jobLogOption JobLogOption func init() { jobCmd.AddCommand(jobLogCmd) + jobLogCmd.PersistentFlags().IntVarP(&jobLogOption.History, "history", "s", -1, "Specific build history of log") } var jobLogCmd = &cobra.Command{ @@ -34,15 +36,15 @@ var jobLogCmd = &cobra.Command{ jclient.Proxy = jenkins.Proxy jclient.ProxyAuth = jenkins.ProxyAuth - printLog(jclient, jobOption.Name, 0) + printLog(jclient, jobOption.Name, jobLogOption.History, 0) }, } -func printLog(jclient *client.JobClient, jobName string, start int64) { - if status, err := jclient.Log(jobName, start); err == nil { +func printLog(jclient *client.JobClient, jobName string, history int, start int64) { + if status, err := jclient.Log(jobName, history, start); err == nil { fmt.Print(status.Text) if status.HasMore { - printLog(jclient, jobName, status.NextStart) + printLog(jclient, jobName, history, status.NextStart) } } else { log.Fatal(err) diff --git a/client/job.go b/client/job.go index 16f46bfc019e7e1fd42117dd1c58e4e3abc8f0cc..aca76bf312b75b12bdb568348bad985411640adb 100644 --- a/client/job.go +++ b/client/job.go @@ -134,14 +134,19 @@ func (q *JobClient) GetHistory(name string) (builds []JobBuild, err error) { } // Log get the log of a job -func (q *JobClient) Log(jobName string, start int64) (jobLog JobLog, err error) { +func (q *JobClient) Log(jobName string, history int, start int64) (jobLog JobLog, err error) { jobItems := strings.Split(jobName, " ") path := "" for _, item := range jobItems { path = fmt.Sprintf("%s/job/%s", path, item) } - api := fmt.Sprintf("%s/%s/lastBuild/logText/progressiveText?start=%d", q.URL, path, start) + var api string + if history == -1 { + api = fmt.Sprintf("%s/%s/lastBuild/logText/progressiveText?start=%d", q.URL, path, start) + } else { + api = fmt.Sprintf("%s/%s/%d/logText/progressiveText?start=%d", q.URL, path, history, start) + } var ( req *http.Request response *http.Response