mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-12 04:26:51 +00:00
Add POC of GitHub Webhook Delivery Forwarder (#682)
* Add POC of GitHub Webhook Delivery Forwarder * multi-forwarder and ctrl-c existing and fix for non-woring http post * Rename source files * Extract signal handling into a dedicated source file * Faster ctrl-c handling * Enable automatic creation of repo hook on startup * Add support for forwarding org hook deliveries * Set hook secret on hook creation via envvar (HOOK_SECRET) * Fix org hook support * Fix HOOK_SECRET for consistency * Refactor to prepare for custom log position provider * Refactor to extract inmemory log position provider * Add configmap-based log position provider * Rename githubwebhookdeliveryforwarder to hookdeliveryforwarder * Refactor to rename LogPositionProvider to Checkpointer and extract ConfigMap checkpointer into a dedicated pkg * Refactor to extract logger initialization * Add hookdeliveryforwarder README and bump go-github to unreleased ver
This commit is contained in:
30
pkg/hookdeliveryforwarder/checkpointer.go
Normal file
30
pkg/hookdeliveryforwarder/checkpointer.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package hookdeliveryforwarder
|
||||
|
||||
import "time"
|
||||
|
||||
type Checkpointer interface {
|
||||
GetOrCreate(hookID int64) (*State, error)
|
||||
Update(hookID int64, pos *State) error
|
||||
}
|
||||
|
||||
type InMemoryCheckpointer struct {
|
||||
t time.Time
|
||||
id int64
|
||||
}
|
||||
|
||||
func (p *InMemoryCheckpointer) GetOrCreate(hookID int64) (*State, error) {
|
||||
return &State{DeliveredAt: p.t}, nil
|
||||
}
|
||||
|
||||
func (p *InMemoryCheckpointer) Update(hookID int64, pos *State) error {
|
||||
p.t = pos.DeliveredAt
|
||||
p.id = pos.ID
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewInMemoryLogPositionProvider() Checkpointer {
|
||||
return &InMemoryCheckpointer{
|
||||
t: time.Now(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user