diff --git a/.golangci.yml b/.golangci.yml index cabf6c094..f7da4ab8c 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,6 +1,6 @@ linters-settings: gofmt: - simplify: false + simplify: true linters: disable-all: true diff --git a/Makefile b/Makefile index f68baa1f5..2aeb048d9 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ vendor: go mod vendor format: - @gofmt -w ${GOFILES_NOVENDOR} + @gofmt -s -w ${GOFILES_NOVENDOR} .PHONY: clean clean: @@ -36,7 +36,7 @@ clean: .PHONY: lint lint: @echo "Running golangci-lint" - go run vendor/github.com/golangci/golangci-lint/cmd/golangci-lint/main.go run + go run vendor/github.com/golangci/golangci-lint/cmd/golangci-lint/main.go run --timeout 5m @echo "Running zerolog linter" go run vendor/github.com/rs/zerolog/cmd/lint/lint.go github.com/woodpecker-ci/woodpecker/cmd/agent go run vendor/github.com/rs/zerolog/cmd/lint/lint.go github.com/woodpecker-ci/woodpecker/cmd/cli diff --git a/agent/runner.go b/agent/runner.go index 43bdda012..7312c3e21 100644 --- a/agent/runner.go +++ b/agent/runner.go @@ -93,27 +93,22 @@ func (r *Runner) Run(ctx context.Context) error { Str("id", work.ID). Logger() - logger.Debug(). - Msg("received execution") + logger.Debug().Msg("received execution") ctx, cancel := context.WithTimeout(ctxmeta, timeout) defer cancel() cancelled := abool.New() go func() { - logger.Debug(). - Msg("listen for cancel signal") + logger.Debug().Msg("listen for cancel signal") if werr := r.client.Wait(ctx, work.ID); werr != nil { cancelled.SetTo(true) - logger.Warn(). - Err(werr). - Msg("cancel signal received") + logger.Warn().Err(werr).Msg("cancel signal received") cancel() } else { - logger.Debug(). - Msg("stop listening for cancel signal") + logger.Debug().Msg("stop listening for cancel signal") } }() @@ -121,13 +116,11 @@ func (r *Runner) Run(ctx context.Context) error { for { select { case <-ctx.Done(): - logger.Debug(). - Msg("pipeline done") + logger.Debug().Msg("pipeline done") return case <-time.After(time.Minute): - logger.Debug(). - Msg("pipeline lease renewed") + logger.Debug().Msg("pipeline lease renewed") r.client.Extend(ctx, work.ID) } @@ -139,9 +132,7 @@ func (r *Runner) Run(ctx context.Context) error { err = r.client.Init(ctxmeta, work.ID, state) if err != nil { - logger.Error(). - Err(err). - Msg("pipeline initialization failed") + logger.Error().Err(err).Msg("pipeline initialization failed") } var uploads sync.WaitGroup @@ -173,30 +164,29 @@ func (r *Runner) Run(ctx context.Context) error { loglogger.Debug().Msg("log stream copied") - file := &rpc.File{} - file.Mime = "application/json+logs" - file.Proc = proc.Alias - file.Name = "logs.json" - file.Data, _ = json.Marshal(logstream.Lines()) - file.Size = len(file.Data) - file.Time = time.Now().Unix() - - loglogger.Debug(). - Msg("log stream uploading") - - if serr := r.client.Upload(ctxmeta, work.ID, file); serr != nil { - loglogger.Error(). - Err(serr). - Msg("log stream upload error") + data, err := json.Marshal(logstream.Lines()) + if err != nil { + loglogger.Err(err).Msg("could not marshal logstream") } - loglogger.Debug(). - Msg("log stream upload complete") + file := &rpc.File{ + Mime: "application/json+logs", + Proc: proc.Alias, + Name: "logs.json", + Data: data, + Size: len(data), + Time: time.Now().Unix(), + } + + loglogger.Debug().Msg("log stream uploading") + if serr := r.client.Upload(ctxmeta, work.ID, file); serr != nil { + loglogger.Error().Err(serr).Msg("log stream upload error") + } else { + loglogger.Debug().Msg("log stream upload complete") + } defer func() { - loglogger.Debug(). - Msg("log stream closed") - + loglogger.Debug().Msg("log stream closed") uploads.Done() }() @@ -206,15 +196,20 @@ func (r *Runner) Run(ctx context.Context) error { } // TODO should be configurable limitedPart = io.LimitReader(part, maxFileUpload) - file = &rpc.File{} - file.Mime = part.Header().Get("Content-Type") - file.Proc = proc.Alias - file.Name = part.FileName() - file.Data, _ = ioutil.ReadAll(limitedPart) - file.Size = len(file.Data) - file.Time = time.Now().Unix() - file.Meta = map[string]string{} + data, err = ioutil.ReadAll(limitedPart) + if err != nil { + loglogger.Err(err).Msg("could not read limited part") + } + file = &rpc.File{ + Mime: part.Header().Get("Content-Type"), + Proc: proc.Alias, + Name: part.FileName(), + Data: data, + Size: len(data), + Time: time.Now().Unix(), + Meta: make(map[string]string), + } for key, value := range part.Header() { file.Meta[key] = value[0] } @@ -255,8 +250,7 @@ func (r *Runner) Run(ctx context.Context) error { Finished: time.Now().Unix(), } defer func() { - proclogger.Debug(). - Msg("update step status") + proclogger.Debug().Msg("update step status") if uerr := r.client.Update(ctxmeta, work.ID, procState); uerr != nil { proclogger.Debug(). @@ -264,8 +258,7 @@ func (r *Runner) Run(ctx context.Context) error { Msg("update step status error") } - proclogger.Debug(). - Msg("update step status complete") + proclogger.Debug().Msg("update step status complete") }() if state.Process.Exited { return nil @@ -325,13 +318,11 @@ func (r *Runner) Run(ctx context.Context) error { Int("exit_code", state.ExitCode). Msg("pipeline complete") - logger.Debug(). - Msg("uploading logs") + logger.Debug().Msg("uploading logs") uploads.Wait() - logger.Debug(). - Msg("uploading logs complete") + logger.Debug().Msg("uploading logs complete") logger.Debug(). Str("error", state.Error). @@ -340,11 +331,9 @@ func (r *Runner) Run(ctx context.Context) error { err = r.client.Done(ctxmeta, work.ID, state) if err != nil { - logger.Error().Err(err). - Msg("updating pipeline status failed") + logger.Error().Err(err).Msg("updating pipeline status failed") } else { - logger.Debug(). - Msg("updating pipeline status complete") + logger.Debug().Msg("updating pipeline status complete") } return nil diff --git a/server/shared/procBuilder_test.go b/server/shared/procBuilder_test.go index eccea2514..3fb8cd39f 100644 --- a/server/shared/procBuilder_test.go +++ b/server/shared/procBuilder_test.go @@ -186,12 +186,12 @@ func TestPipelineName(t *testing.T) { Regs: []*model.Registry{}, Link: "", Yamls: []*remote.FileMeta{ - &remote.FileMeta{Name: ".woodpecker/lint.yml", Data: []byte(` + {Name: ".woodpecker/lint.yml", Data: []byte(` pipeline: build: image: scratch `)}, - &remote.FileMeta{Name: ".woodpecker/.test.yml", Data: []byte(` + {Name: ".woodpecker/.test.yml", Data: []byte(` pipeline: build: image: scratch