Skip to content

Commit e14fb4b

Browse files
authored
Merge pull request #48 from drone-plugins/starlark
Update build
2 parents 2299439 + e014932 commit e14fb4b

File tree

10 files changed

+391
-865
lines changed

10 files changed

+391
-865
lines changed

.drone.jsonnet

Lines changed: 0 additions & 14 deletions
This file was deleted.

.drone.starlark

Lines changed: 371 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,371 @@
1+
def main(ctx):
2+
before = testing()
3+
4+
stages = [
5+
linux('amd64'),
6+
linux('arm64'),
7+
linux('arm'),
8+
windows('1903'),
9+
windows('1809'),
10+
]
11+
12+
after = manifest() + gitter()
13+
14+
for b in before:
15+
for s in stages:
16+
s['depends_on'].append(b['name'])
17+
18+
for s in stages:
19+
for a in after:
20+
a['depends_on'].append(s['name'])
21+
22+
return before + stages + after
23+
24+
def testing():
25+
return [{
26+
'kind': 'pipeline',
27+
'type': 'docker',
28+
'name': 'testing',
29+
'platform': {
30+
'os': 'linux',
31+
'arch': 'amd64',
32+
},
33+
'steps': [
34+
{
35+
'name': 'vet',
36+
'image': 'golang:1.12',
37+
'pull': 'always',
38+
'commands': [
39+
'go vet ./...'
40+
],
41+
'volumes': [
42+
{
43+
'name': 'gopath',
44+
'path': '/go'
45+
}
46+
]
47+
},
48+
{
49+
'name': 'test',
50+
'image': 'golang:1.12',
51+
'pull': 'always',
52+
'commands': [
53+
'go test -cover ./...'
54+
],
55+
'volumes': [
56+
{
57+
'name': 'gopath',
58+
'path': '/go'
59+
}
60+
]
61+
}
62+
],
63+
'volumes': [
64+
{
65+
'name': 'gopath',
66+
'temp': {}
67+
}
68+
],
69+
'trigger': {
70+
'ref': [
71+
'refs/heads/master',
72+
'refs/tags/**',
73+
'refs/pull/**'
74+
]
75+
}
76+
}]
77+
78+
def linux(arch):
79+
return {
80+
'kind': 'pipeline',
81+
'type': 'docker',
82+
'name': 'linux-%s' % arch,
83+
'platform': {
84+
'os': 'linux',
85+
'arch': arch,
86+
},
87+
'steps': [
88+
{
89+
'name': 'build-push',
90+
'image': 'golang:1.12',
91+
'pull': 'always',
92+
'environment': {
93+
'CGO_ENABLED': '0'
94+
},
95+
'commands': [
96+
'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/%s/drone-webhook' % arch
97+
],
98+
'when': {
99+
'event': {
100+
'exclude': [
101+
'tag'
102+
]
103+
}
104+
}
105+
},
106+
{
107+
'name': 'build-tag',
108+
'image': 'golang:1.12',
109+
'pull': 'always',
110+
'environment': {
111+
'CGO_ENABLED': '0'
112+
},
113+
'commands': [
114+
'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/%s/drone-webhook' % arch
115+
],
116+
'when': {
117+
'event': [
118+
'tag'
119+
]
120+
}
121+
},
122+
{
123+
'name': 'executable',
124+
'image': 'golang:1.12',
125+
'pull': 'always',
126+
'commands': [
127+
'./release/linux/%s/drone-webhook --help' % arch
128+
]
129+
},
130+
{
131+
'name': 'dryrun',
132+
'image': 'plugins/docker',
133+
'pull': 'always',
134+
'settings': {
135+
'dry_run': True,
136+
'tags': 'linux-%s' % arch,
137+
'dockerfile': 'docker/Dockerfile.linux.%s' % arch,
138+
'repo': 'plugins/webhook',
139+
'username': {
140+
'from_secret': 'docker_username'
141+
},
142+
'password': {
143+
'from_secret': 'docker_password'
144+
}
145+
},
146+
'when': {
147+
'event': [
148+
'pull_request'
149+
]
150+
}
151+
},
152+
{
153+
'name': 'publish',
154+
'image': 'plugins/docker',
155+
'pull': 'always',
156+
'settings': {
157+
'auto_tag': True,
158+
'auto_tag_suffix': 'linux-%s' % arch,
159+
'dockerfile': 'docker/Dockerfile.linux.%s' % arch,
160+
'repo': 'plugins/webhook',
161+
'username': {
162+
'from_secret': 'docker_username'
163+
},
164+
'password': {
165+
'from_secret': 'docker_password'
166+
}
167+
},
168+
'when': {
169+
'event': {
170+
'exclude': [
171+
'pull_request'
172+
]
173+
}
174+
}
175+
}
176+
],
177+
'depends_on': [],
178+
'trigger': {
179+
'ref': [
180+
'refs/heads/master',
181+
'refs/tags/**',
182+
'refs/pull/**'
183+
]
184+
}
185+
}
186+
187+
def windows(version):
188+
return {
189+
'kind': 'pipeline',
190+
'type': 'ssh',
191+
'name': 'windows-%s' % version,
192+
'platform': {
193+
'os': 'windows'
194+
},
195+
'server': {
196+
'host': {
197+
'from_secret': 'windows_server_%s' % version
198+
},
199+
'user': {
200+
'from_secret': 'windows_username'
201+
},
202+
'password': {
203+
'from_secret': 'windows_password'
204+
},
205+
},
206+
'steps': [
207+
{
208+
'name': 'build-push',
209+
'environment': {
210+
'CGO_ENABLED': '0'
211+
},
212+
'commands': [
213+
'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/windows/amd64/drone-webhook.exe',
214+
],
215+
'when': {
216+
'event': {
217+
'exclude': [
218+
'tag'
219+
]
220+
}
221+
}
222+
},
223+
{
224+
'name': 'build-tag',
225+
'environment': {
226+
'CGO_ENABLED': '0'
227+
},
228+
'commands': [
229+
'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/windows/amd64/drone-webhook.exe',
230+
],
231+
'when': {
232+
'event': [
233+
'tag'
234+
]
235+
}
236+
},
237+
{
238+
'name': 'executable',
239+
'commands': [
240+
'./release/windows/amd64/drone-webhook.exe --help',
241+
]
242+
},
243+
{
244+
'name': 'latest',
245+
'environment': {
246+
'USERNAME': {
247+
'from_secret': 'docker_username'
248+
},
249+
'PASSWORD': {
250+
'from_secret': 'docker_password'
251+
},
252+
},
253+
'commands': [
254+
'echo $env:PASSWORD | docker login --username $env:USERNAME --password-stdin',
255+
'docker build --pull -f docker/Dockerfile.windows.%s -t plugins/webhook:windows-%s-amd64 .' % (version, version),
256+
'docker run --rm plugins/webhook:windows-%s-amd64 --help' % version,
257+
'docker push plugins/webhook:windows-%s-amd64' % version,
258+
],
259+
'when': {
260+
'ref': [
261+
'refs/heads/master',
262+
]
263+
}
264+
},
265+
{
266+
'name': 'tagged',
267+
'environment': {
268+
'USERNAME': {
269+
'from_secret': 'docker_username'
270+
},
271+
'PASSWORD': {
272+
'from_secret': 'docker_password'
273+
},
274+
},
275+
'commands': [
276+
'echo $env:PASSWORD | docker login --username $env:USERNAME --password-stdin',
277+
'docker build --pull -f docker/Dockerfile.windows.%s -t plugins/webhook:${DRONE_TAG##v}-windows-%s-amd64 .' % (version, version),
278+
'docker run --rm plugins/webhook:${DRONE_TAG##v}-windows-%s-amd64 --help' % version,
279+
'docker push plugins/webhook:${DRONE_TAG##v}-windows-%s-amd64' % version,
280+
],
281+
'when': {
282+
'ref': [
283+
'refs/tags/**',
284+
]
285+
}
286+
}
287+
],
288+
'depends_on': [],
289+
'trigger': {
290+
'ref': [
291+
'refs/heads/master',
292+
'refs/tags/**',
293+
]
294+
}
295+
}
296+
297+
def manifest():
298+
return [{
299+
'kind': 'pipeline',
300+
'type': 'docker',
301+
'name': 'manifest',
302+
'steps': [
303+
{
304+
'name': 'manifest',
305+
'image': 'plugins/manifest',
306+
'pull': 'always',
307+
'settings': {
308+
'auto_tag': 'true',
309+
'username': {
310+
'from_secret': 'docker_username'
311+
},
312+
'password': {
313+
'from_secret': 'docker_password'
314+
},
315+
'spec': 'docker/manifest.tmpl',
316+
'ignore_missing': 'true',
317+
},
318+
},
319+
{
320+
'name': 'microbadger',
321+
'image': 'plugins/webhook',
322+
'pull': 'always',
323+
'settings': {
324+
'urls': {
325+
'from_secret': 'microbadger_url'
326+
}
327+
},
328+
}
329+
],
330+
'depends_on': [],
331+
'trigger': {
332+
'ref': [
333+
'refs/heads/master',
334+
'refs/tags/**'
335+
]
336+
}
337+
}]
338+
339+
def gitter():
340+
return [{
341+
'kind': 'pipeline',
342+
'type': 'docker',
343+
'name': 'gitter',
344+
'clone': {
345+
'disable': True
346+
},
347+
'steps': [
348+
{
349+
'name': 'gitter',
350+
'image': 'plugins/gitter',
351+
'pull': 'always',
352+
'settings': {
353+
'webhook': {
354+
'from_secret': 'gitter_webhook'
355+
}
356+
},
357+
},
358+
],
359+
'depends_on': [
360+
'manifest'
361+
],
362+
'trigger': {
363+
'ref': [
364+
'refs/heads/master',
365+
'refs/tags/**'
366+
],
367+
'status': [
368+
'failure'
369+
]
370+
}
371+
}]

.drone.windows.jsonnet

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)