-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.drone.jsonnet
94 lines (82 loc) · 2.18 KB
/
.drone.jsonnet
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
local Project = "scala-range";
local Dir = Project + "/";
local ver211 = "2.11";
local ver212 = "2.12";
local ver213 = "2.13";
local ver3 = "3.0";
local AbstractPipeline(name) = {
kind: "pipeline",
type: "docker",
name: name
};
local Workspace(name) = {
workspace: { path: name }
};
local WsPipeline(ver) = AbstractPipeline(Dir + ver) + Workspace(ver);
local Pipeline(ver, build, notify) = WsPipeline(ver) + {
kind: "pipeline",
type: "docker",
name: Dir + ver,
steps: [ build, notify ]
};
local BuildStep(ver) = {
name: "build",
image: "andyglow/sbt:latest",
when: { "branch": "master" },
environment: {
SCALA_VER: ver,
CODECOV_TOKEN: { from_secret: "codecov_token" },
DRONE_WORKSPACE_PATH: "/drone/src/" + ver
}
};
local SbtCleanTest(ver) = BuildStep(ver) + {
commands: [
"sbt clean test"
]
};
local Coverage(name, ver) = BuildStep(ver) + {
name: name,
commands: [
"sbt clean coverage test",
"sbt coverageAggregate",
"curl -Os https://uploader.codecov.io/latest/alpine/codecov",
"chmod +x codecov",
"./codecov -t ${CODECOV_TOKEN}",
]
};
local NotifyMessage = |||
{{#success build.status}}
{{repo.name}}: build {{build.number}} for ver %(ver)s succeeded (spent {{since build.started}}). Good job. {{build.link}}
{{else}}
{{repo.name}}: build {{build.number}} for ver %(ver)s failed. Fix please. {{build.link}}
{{/success}}
|||;
local Notify(name, ver) = {
name: name,
image: "plugins/slack",
when: { status: [ "success", "failure" ] },
settings: {
webhook: { from_secret: "slack_webhook_url" },
channel: "builds",
username: "drone",
link_names: true,
template: NotifyMessage % { ver: ver }
}
};
[
Pipeline(ver3 , SbtCleanTest(ver3) , Notify("slack", ver3)),
Pipeline(ver213 , SbtCleanTest(ver213) , Notify("slack", ver213)),
Pipeline(ver212 , SbtCleanTest(ver212) , Notify("slack", ver212)),
Pipeline(ver211 , SbtCleanTest(ver211) , Notify("slack", ver211)),
AbstractPipeline("finalize") + Workspace(ver213) + {
steps: [
Coverage("scoverage", ver213)
],
depends_on: [
Dir + ver3,
Dir + ver213,
Dir + ver212,
Dir + ver211
]
},
]