Review every new snapshot with an agent from the other vendor
This commit is contained in:
@@ -60,10 +60,11 @@ func (m *Manager) runSnapshots(l *live, st *snapState, req *snapRequest) {
|
||||
closed := st.closed
|
||||
m.snapMu.Unlock()
|
||||
if !closed {
|
||||
err := m.takeSnapshot(context.Background(), l, req.trigger, req.seq)
|
||||
snap, err := m.takeSnapshot(context.Background(), l, req.trigger, req.seq)
|
||||
if err != nil {
|
||||
slog.Error("take snapshot", "task", l.taskID, "trigger", req.trigger, "err", err)
|
||||
}
|
||||
go m.afterSnapshot(snap)
|
||||
}
|
||||
st.mu.Unlock()
|
||||
|
||||
@@ -79,26 +80,26 @@ func (m *Manager) runSnapshots(l *live, st *snapState, req *snapRequest) {
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Manager) takeSnapshot(ctx context.Context, l *live, trigger api.SnapshotTrigger, seq int64) error {
|
||||
func (m *Manager) takeSnapshot(ctx context.Context, l *live, trigger api.SnapshotTrigger, seq int64) (*api.Snapshot, error) {
|
||||
if seq == 0 {
|
||||
var err error
|
||||
seq, err = m.store.LastTaskSeq(ctx, l.taskID)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
tree, err := git.Snapshot(l.dir)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
last, err := m.store.LastSnapshot(ctx, l.taskID)
|
||||
if err != nil && !errors.Is(err, store.ErrNotFound) {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
if err == nil && last.TreeSha == tree {
|
||||
return nil
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
n := last.N + 1
|
||||
@@ -109,10 +110,10 @@ func (m *Manager) takeSnapshot(ctx context.Context, l *live, trigger api.Snapsho
|
||||
"GIT_COMMITTER_EMAIL=" + l.gitEmail,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return m.store.CreateSnapshot(ctx, api.Snapshot{
|
||||
snap := api.Snapshot{
|
||||
Id: store.NewID(),
|
||||
TaskId: l.taskID,
|
||||
AgentSessionId: l.id,
|
||||
@@ -122,7 +123,12 @@ func (m *Manager) takeSnapshot(ctx context.Context, l *live, trigger api.Snapsho
|
||||
EventSeq: seq,
|
||||
Trigger: trigger,
|
||||
CreatedAt: time.Now().UTC(),
|
||||
}, l.projectID)
|
||||
}
|
||||
err = m.store.CreateSnapshot(ctx, snap, l.projectID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &snap, nil
|
||||
}
|
||||
|
||||
func (m *Manager) dropSnapshots(repo, taskID string) error {
|
||||
|
||||
Reference in New Issue
Block a user