-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSendBuildInfoToNeo4j.cs
More file actions
137 lines (116 loc) · 4.09 KB
/
SendBuildInfoToNeo4j.cs
File metadata and controls
137 lines (116 loc) · 4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using Neo4jClr.Builders;
using Neo4jClr.Nodes;
namespace Neo4jClr
{
public class SendBuildInfo
{
private readonly AgentInfo _agentInfo;
private readonly BuildInfo _buildInfo;
private readonly ResultInfo _resultInfo;
public SendBuildInfo(string url, AgentInfo agentInfo, BuildInfo buildInfo, ResultInfo resultInfo)
{
Client.Url = url;
_agentInfo = agentInfo;
_buildInfo = buildInfo;
_resultInfo = resultInfo;
}
public int Send()
{
var product = CreateProduct();
var pipeline = CreatePipeline(product);
var stage = CreateStage(pipeline);
var job = CreateJob(stage);
var agent = CreateAgent(job);
var build = CreateBuild(agent);
return CreateResults(build);
}
private Job CreateJob(Stage stage)
{
return new JobBuilder()
.WithName(_agentInfo.JobName)
.WithStage(stage)
.Build();
}
private Product CreateProduct()
{
return new ProductBuilder()
.WithName(_agentInfo.ProductName)
.Build();
}
private Pipeline CreatePipeline(Product product)
{
return new PipelineBuilder()
.WithName(_agentInfo.PipelineName)
.WithProduct(product)
.Build();
}
private Stage CreateStage(Pipeline pipeline)
{
return new StageBuilder()
.WithName(_agentInfo.StageName)
.WithPipeline(pipeline)
.Build();
}
private Agent CreateAgent(Job job)
{
return new AgentBuilder()
.WithName(_agentInfo.AgentName)
.WithJob(job)
.Build();
}
private Build CreateBuild(Agent agent)
{
return new BuildBuilder()
.WithAgent(agent)
.WithNumber(_buildInfo.Number)
.WithTimestamp(_buildInfo.Timestamp)
.WithDuration(_buildInfo.Duration)
.WithStatus(_buildInfo.Status)
.Build();
}
private int CreateResults(Build build)
{
var scheduled = new ResultItemBuilder()
.WithBuild(build)
.WithType("scheduled")
.WithTimestamp(_resultInfo.SchedulingTimestamp)
.WithDuration(_resultInfo.SchedulingDuration)
.Build();
var assigned = new ResultItemBuilder()
.WithBuild(build)
.WithType("assigned")
.WithTimestamp(_resultInfo.AssigningTimestamp)
.WithDuration(_resultInfo.AssigningDuration)
.WithMovedFrom(scheduled)
.Build();
var prepared = new ResultItemBuilder()
.WithBuild(build)
.WithType("prepared")
.WithTimestamp(_resultInfo.PreparingTimestamp)
.WithDuration(_resultInfo.PreparingDuration)
.WithMovedFrom(assigned)
.Build();
var built = new ResultItemBuilder()
.WithBuild(build)
.WithType("built")
.WithTimestamp(_resultInfo.BuildingTimestamp)
.WithDuration(_resultInfo.BuildingDuration)
.WithMovedFrom(prepared)
.Build();
var completing = new ResultItemBuilder()
.WithBuild(build)
.WithType("completing")
.WithTimestamp(_resultInfo.CompletingTimestamp)
.WithDuration(_resultInfo.CompletingDuration)
.WithMovedFrom(built)
.Build();
new ResultItemBuilder()
.WithBuild(build)
.WithType("completed")
.WithTimestamp(_resultInfo.CompletedTimestamp)
.WithMovedFrom(completing)
.Build();
return 1;
}
}
}