1
1
package main
2
2
3
3
import (
4
- "github.com/diggerhq/digger/backend/ci_backends"
5
4
"github.com/diggerhq/digger/backend/models"
5
+ "github.com/diggerhq/digger/backend/utils"
6
+ "github.com/diggerhq/digger/libs/orchestrator"
7
+ "github.com/diggerhq/digger/libs/orchestrator/github"
6
8
orchestrator_scheduler "github.com/diggerhq/digger/libs/orchestrator/scheduler"
7
9
"log"
8
10
)
9
11
10
- func RunQueuesStateMachine (queueItem * models.DiggerRunQueueItem , CIBackend ci_backends. CiBackend ) {
12
+ func RunQueuesStateMachine (queueItem * models.DiggerRunQueueItem , service orchestrator. PullRequestService ) {
11
13
dr := queueItem .DiggerRun
12
14
switch queueItem .DiggerRun .Status {
13
15
case models .RunQueued :
14
16
// trigger plan workflow (trigger the batch)
15
- // .....
17
+
18
+ repoOwner := dr .Repo .RepoOrganisation
19
+ repoName := dr .Repo .RepoName
20
+ job , err := models .DB .GetDiggerJobFromRunStage (dr .PlanStage )
21
+ jobSpec := string (job .SerializedJobSpec )
22
+ commentId := int64 (2037675659 )
23
+ utils .TriggerGithubWorkflow (service .(* github.GithubService ).Client , repoOwner , repoName , * job , jobSpec , commentId )
24
+
16
25
// change status to RunPendingPlan
17
26
log .Printf ("Updating run queueItem item to planning state" )
18
27
dr .Status = models .RunPlanning
19
- err : = models .DB .UpdateDiggerRun (& dr )
28
+ err = models .DB .UpdateDiggerRun (& dr )
20
29
if err != nil {
21
30
log .Printf ("ERROR: Failed to update Digger Run for queueID: %v [%v %v]" , queueItem .ID , queueItem .DiggerRunId , queueItem .DiggerRun .ProjectName )
22
31
}
23
32
case models .RunPlanning :
24
33
// Check the status of the batch
25
- batchStatus := orchestrator_scheduler .BatchJobSucceeded
34
+ batchStatus := orchestrator_scheduler .BatchJobSucceeded //dr.PlanStage.Batch.Status
26
35
approvalRequired := true
27
36
28
37
// if failed then go straight to failed
@@ -39,34 +48,42 @@ func RunQueuesStateMachine(queueItem *models.DiggerRunQueueItem, CIBackend ci_ba
39
48
}
40
49
41
50
// if successful then
42
- if batchStatus == orchestrator_scheduler .BatchJobSucceeded && approvalRequired {
43
- dr .Status = models .RunPendingApproval
44
- err := models .DB .UpdateDiggerRun (& dr )
45
- if err != nil {
46
- log .Printf ("ERROR: Failed to update Digger Run for queueID: %v [%v %v]" , queueItem .ID , queueItem .DiggerRunId , queueItem .DiggerRun .ProjectName )
47
- }
48
- } else {
49
- dr .Status = models .RunApproved
50
- err := models .DB .UpdateDiggerRun (& dr )
51
- if err != nil {
52
- log .Printf ("ERROR: Failed to update Digger Run for queueID: %v [%v %v]" , queueItem .ID , queueItem .DiggerRunId , queueItem .DiggerRun .ProjectName )
51
+ if batchStatus == orchestrator_scheduler .BatchJobSucceeded {
52
+ if approvalRequired {
53
+ dr .Status = models .RunPendingApproval
54
+ err := models .DB .UpdateDiggerRun (& dr )
55
+ if err != nil {
56
+ log .Printf ("ERROR: Failed to update Digger Run for queueID: %v [%v %v]" , queueItem .ID , queueItem .DiggerRunId , queueItem .DiggerRun .ProjectName )
57
+ }
58
+ } else {
59
+ dr .Status = models .RunApproved
60
+ err := models .DB .UpdateDiggerRun (& dr )
61
+ if err != nil {
62
+ log .Printf ("ERROR: Failed to update Digger Run for queueID: %v [%v %v]" , queueItem .ID , queueItem .DiggerRunId , queueItem .DiggerRun .ProjectName )
63
+ }
53
64
}
54
65
}
55
66
56
67
case models .RunPendingApproval :
57
68
// do nothing
58
69
case models .RunApproved :
59
70
// trigger apply stage workflow
60
- // ...
71
+ repoOwner := dr .Repo .RepoOrganisation
72
+ repoName := dr .Repo .RepoName
73
+ job , err := models .DB .GetDiggerJobFromRunStage (dr .ApplyStage )
74
+ jobSpec := string (job .SerializedJobSpec )
75
+ commentId := int64 (2037675659 )
76
+ utils .TriggerGithubWorkflow (service .(* github.GithubService ).Client , repoOwner , repoName , * job , jobSpec , commentId )
77
+
61
78
dr .Status = models .RunApplying
62
- err : = models .DB .UpdateDiggerRun (& dr )
79
+ err = models .DB .UpdateDiggerRun (& dr )
63
80
if err != nil {
64
81
log .Printf ("ERROR: Failed to update Digger Run for queueID: %v [%v %v]" , queueItem .ID , queueItem .DiggerRunId , queueItem .DiggerRun .ProjectName )
65
82
}
66
83
67
84
case models .RunApplying :
68
85
// Check the status of the batch
69
- batchStatus := orchestrator_scheduler . BatchJobSucceeded
86
+ batchStatus := dr . PlanStage . Batch . Status
70
87
71
88
// if failed then go straight to failed
72
89
if batchStatus == orchestrator_scheduler .BatchJobFailed {
0 commit comments