Compare commits

..

3 Commits

Author SHA1 Message Date
990c12b3c1
feat: add context parameter to Task.Execute method
All checks were successful
Go Tests / Run Tests (1.24.2) (push) Successful in 18s
2025-04-18 15:46:43 -06:00
8c0f9deaf1
fix: second pass fixing the formatting of the build message
All checks were successful
Go Tests / Run Tests (1.24.2) (push) Successful in 18s
2025-04-18 13:53:06 -06:00
07c7e3163f
test: fix the ci run message sent to campfire
All checks were successful
Go Tests / Run Tests (1.24.2) (push) Successful in 19s
2025-04-18 13:51:41 -06:00
4 changed files with 14 additions and 10 deletions

View File

@ -39,7 +39,7 @@ jobs:
run: |
curl -X POST \
-H "Content-Type: text/plain" \
-d "✅ `task` success! View run at: https://git.canoozie.net/${{ gitea.repository }}/actions/runs/${{ gitea.run_number }}" \
-d "✅ <b>task</b> success! View run at: https://git.canoozie.net/${{ gitea.repository }}/actions/runs/${{ gitea.run_number }}" \
https://chat.canoozie.net/rooms/5/2-q6gKxqrTAfhd/messages
- name: Send failure notification
@ -47,5 +47,5 @@ jobs:
run: |
curl -X POST \
-H "Content-Type: text/plain" \
-d "❌ `task` failure! View run at: https://git.canoozie.net/${{ gitea.repository }}/actions/runs/${{ gitea.run_number }}" \
-d "❌ <b>task</b> failure! View run at: https://git.canoozie.net/${{ gitea.repository }}/actions/runs/${{ gitea.run_number }}" \
https://chat.canoozie.net/rooms/5/2-q6gKxqrTAfhd/messages

View File

@ -28,6 +28,7 @@ go get git.canoozie.net/jer/task
package main
import (
"context"
"fmt"
"time"
@ -45,7 +46,7 @@ func (t *MyTask) ID() string {
return t.TaskID
}
func (t *MyTask) Execute() error {
func (t *MyTask) Execute(ctx context.Context) error {
fmt.Printf("Executing task: %s\n", t.Name)
return nil
}
@ -135,13 +136,13 @@ To create a task, implement the `Task` interface:
```go
type Task interface {
ID() string
Execute() error
Execute(ctx context.Context) error
Dependencies() []string
}
```
- `ID()` - Returns a unique identifier for this task
- `Execute()` - Performs the task's operation, returning any errors
- `Execute(ctx context.Context)` - Performs the task's operation with context, returning any errors
- `Dependencies()` - Returns a list of task IDs that must complete successfully before this task can run
Any errors returned from `Execute()` will be logged and will prevent dependent tasks from running.
@ -154,7 +155,7 @@ Any errors returned from `Execute()` will be logged and will prevent dependent t
```go
type Task interface {
ID() string
Execute() error
Execute(ctx context.Context) error
Dependencies() []string
}
```

View File

@ -1,6 +1,7 @@
package task
import (
"context"
"log"
"sync"
"time"
@ -8,7 +9,7 @@ import (
type Task interface {
ID() string
Execute() error
Execute(ctx context.Context) error
Dependencies() []string
}
@ -346,8 +347,9 @@ func (te *TaskExecutor) executeTask(st *ScheduledTask) {
}
te.completedTasksMutex.Unlock()
// Execute the task
err := st.task.Execute()
// Execute the task with a background context
ctx := context.Background()
err := st.task.Execute(ctx)
// Update final task status
te.completedTasksMutex.Lock()

View File

@ -1,6 +1,7 @@
package task
import (
"context"
"errors"
"testing"
"time"
@ -16,7 +17,7 @@ func (m *mockTask) ID() string {
return m.id
}
func (m *mockTask) Execute() error {
func (m *mockTask) Execute(ctx context.Context) error {
return m.executeFunc()
}