Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pipeline/rpc/proto/woodpecker.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pipeline/rpc/proto/woodpecker_grpc.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions server/grpc/rpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,10 @@ func (s *RPC) Update(c context.Context, strWorkflowID string, state rpc.StepStat
log.Error().Err(err).Msg("rpc.update: cannot update step")
}

if state.Exited {
server.Config.Services.LogStore.StepFinished(step)
}

if currentPipeline.Workflows, err = s.store.WorkflowGetTree(currentPipeline); err != nil {
log.Error().Err(err).Msg("cannot build tree from step list")
return err
Expand Down
33 changes: 0 additions & 33 deletions server/pipeline/step_status.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
package pipeline

import (
"time"

"go.woodpecker-ci.org/woodpecker/v3/pipeline"
"go.woodpecker-ci.org/woodpecker/v3/pipeline/rpc"
"go.woodpecker-ci.org/woodpecker/v3/server/model"
Expand All @@ -43,12 +41,6 @@ func UpdateStepStatus(store store.Store, step *model.Step, state rpc.StepState)
return store.StepUpdate(step)
}

func UpdateStepToStatusStarted(store store.Store, step model.Step, state rpc.StepState) (*model.Step, error) {
step.Started = state.Started
step.State = model.StatusRunning
return &step, store.StepUpdate(&step)
}

func UpdateStepToStatusSkipped(store store.Store, step model.Step, finished int64) (*model.Step, error) {
step.State = model.StatusSkipped
if step.Started != 0 {
Expand All @@ -57,28 +49,3 @@ func UpdateStepToStatusSkipped(store store.Store, step model.Step, finished int6
}
return &step, store.StepUpdate(&step)
}

func UpdateStepStatusToDone(store store.Store, step model.Step, state rpc.StepState) (*model.Step, error) {
step.Finished = state.Finished
step.Error = state.Error
step.ExitCode = state.ExitCode
if state.Started == 0 {
step.State = model.StatusSkipped
} else {
step.State = model.StatusSuccess
}
if step.ExitCode != 0 || step.Error != "" {
step.State = model.StatusFailure
}
return &step, store.StepUpdate(&step)
}

func UpdateStepToStatusKilled(store store.Store, step model.Step) (*model.Step, error) {
step.State = model.StatusKilled
step.Finished = time.Now().Unix()
if step.Started == 0 {
step.Started = step.Finished
}
step.ExitCode = pipeline.ExitCodeKilled
return &step, store.StepUpdate(&step)
}
83 changes: 0 additions & 83 deletions server/pipeline/step_status_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ package pipeline

import (
"testing"
"time"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
Expand Down Expand Up @@ -149,16 +148,6 @@ func TestUpdateStepStatusExitedWithCode(t *testing.T) {
assert.Equal(t, 1, step.ExitCode)
}

func TestUpdateStepToStatusStarted(t *testing.T) {
t.Parallel()

state := rpc.StepState{Started: int64(42)}
step, _ := UpdateStepToStatusStarted(mockStoreStep(t), model.Step{}, state)

assert.Equal(t, model.StatusRunning, step.State)
assert.EqualValues(t, 42, step.Started)
}

func TestUpdateStepToStatusSkipped(t *testing.T) {
t.Parallel()

Expand All @@ -180,75 +169,3 @@ func TestUpdateStepToStatusSkippedButStarted(t *testing.T) {
assert.Equal(t, model.StatusSuccess, step.State)
assert.EqualValues(t, 1, step.Finished)
}

func TestUpdateStepStatusToDoneSkipped(t *testing.T) {
t.Parallel()

state := rpc.StepState{
Finished: int64(34),
}

step, _ := UpdateStepStatusToDone(mockStoreStep(t), model.Step{}, state)

assert.Equal(t, model.StatusSkipped, step.State)
assert.EqualValues(t, 34, step.Finished)
assert.Empty(t, step.Error)
assert.Equal(t, 0, step.ExitCode)
}

func TestUpdateStepStatusToDoneSuccess(t *testing.T) {
t.Parallel()

state := rpc.StepState{
Started: int64(42),
Finished: int64(34),
}

step, _ := UpdateStepStatusToDone(mockStoreStep(t), model.Step{}, state)

assert.Equal(t, model.StatusSuccess, step.State)
assert.EqualValues(t, 34, step.Finished)
assert.Empty(t, step.Error)
assert.Equal(t, 0, step.ExitCode)
}

func TestUpdateStepStatusToDoneFailureWithError(t *testing.T) {
t.Parallel()

state := rpc.StepState{Error: "an error"}

step, _ := UpdateStepStatusToDone(mockStoreStep(t), model.Step{}, state)

assert.Equal(t, model.StatusFailure, step.State)
}

func TestUpdateStepStatusToDoneFailureWithExitCode(t *testing.T) {
t.Parallel()

state := rpc.StepState{ExitCode: 43}

step, _ := UpdateStepStatusToDone(mockStoreStep(t), model.Step{}, state)

assert.Equal(t, model.StatusFailure, step.State)
}

func TestUpdateStepToStatusKilledStarted(t *testing.T) {
t.Parallel()

now := time.Now().Unix()

step, _ := UpdateStepToStatusKilled(mockStoreStep(t), model.Step{})

assert.Equal(t, model.StatusKilled, step.State)
assert.LessOrEqual(t, now, step.Finished)
assert.Equal(t, step.Finished, step.Started)
assert.Equal(t, 137, step.ExitCode)
}

func TestUpdateStepToStatusKilledNotStarted(t *testing.T) {
t.Parallel()

step, _ := UpdateStepToStatusKilled(mockStoreStep(t), model.Step{Started: int64(1)})

assert.EqualValues(t, 1, step.Started)
}
2 changes: 2 additions & 0 deletions server/services/log/file/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,5 @@ func (l logStore) LogAppend(step *model.Step, logEntries []*model.LogEntry) erro
func (l logStore) LogDelete(step *model.Step) error {
return os.Remove(l.filePath(step.ID))
}

func (l logStore) StepFinished(_ *model.Step) {}
40 changes: 40 additions & 0 deletions server/services/log/mocks/mock_Service.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions server/services/log/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ type Service interface {
LogFind(step *model.Step) ([]*model.LogEntry, error)
LogAppend(step *model.Step, logEntries []*model.LogEntry) error
LogDelete(step *model.Step) error
StepFinished(step *model.Step)
}
2 changes: 2 additions & 0 deletions server/store/datastore/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,5 @@ func logDelete(sess *xorm.Session, stepID int64) error {
_, err := sess.Where("step_id = ?", stepID).Delete(new(model.LogEntry))
return err
}

func (s storage) StepFinished(_ *model.Step) {}
40 changes: 40 additions & 0 deletions server/store/mocks/mock_Store.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading