commands/ci/trace/trace.go (50 lines of code) (raw):

package trace import ( "gitlab.com/gitlab-org/cli/commands/ci/ciutils" "gitlab.com/gitlab-org/cli/commands/cmdutils" "github.com/MakeNowJust/heredoc/v2" "github.com/spf13/cobra" ) func NewCmdTrace(f *cmdutils.Factory) *cobra.Command { pipelineCITraceCmd := &cobra.Command{ Use: "trace [<job-id>] [flags]", Short: `Trace a CI/CD job log in real time.`, Example: heredoc.Doc(` # Interactively select a job to trace $ glab ci trace # Trace job with ID 224356863 $ glab ci trace 224356863 # Trace job with the name 'lint' $ glab ci trace lint `), RunE: func(cmd *cobra.Command, args []string) error { var err error repo, err := f.BaseRepo() if err != nil { return err } apiClient, err := f.HttpClient() if err != nil { return err } jobName := "" if len(args) != 0 { jobName = args[0] } branch, _ := cmd.Flags().GetString("branch") pipelineId, _ := cmd.Flags().GetInt("pipeline-id") return ciutils.TraceJob(&ciutils.JobInputs{ JobName: jobName, Branch: branch, PipelineId: pipelineId, }, &ciutils.JobOptions{ ApiClient: apiClient, IO: f.IO, Repo: repo, }) }, } pipelineCITraceCmd.Flags().StringP("branch", "b", "", "The branch to search for the job. (default current branch)") pipelineCITraceCmd.Flags().IntP("pipeline-id", "p", 0, "The pipeline ID to search for the job.") return pipelineCITraceCmd }