-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.drone.star
126 lines (118 loc) · 2.93 KB
/
.drone.star
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
def main(ctx):
before = testing(ctx)
stages = []
after = release(ctx) + notification(ctx)
for b in before:
for s in stages:
s["depends_on"].append(b["name"])
for s in stages:
for a in after:
a["depends_on"].append(s["name"])
return before + stages + after
def testing(ctx):
return [{
"kind": "pipeline",
"type": "docker",
"name": "testing",
"platform": {
"os": "linux",
"arch": "amd64",
},
"steps": [
{
"name": "lint",
"image": "koalaman/shellcheck-alpine:stable",
"commands": [
"shellcheck ./retry",
],
},
],
"trigger": {
"ref": [
"refs/heads/master",
"refs/tags/**",
"refs/pull/**",
],
},
}]
def release(ctx):
return [{
"kind": "pipeline",
"type": "docker",
"name": "release",
"steps": [
{
"name": "changelog",
"image": "thegeeklab/git-chglog",
"commands": [
"git fetch -tq",
"git-chglog --no-color --no-emoji %s" % (ctx.build.ref.replace("refs/tags/", "") if ctx.build.event == "tag" else "--next-tag unreleased unreleased"),
"git-chglog --no-color --no-emoji -o CHANGELOG.md %s" % (ctx.build.ref.replace("refs/tags/", "") if ctx.build.event == "tag" else "--next-tag unreleased unreleased"),
]
},
{
"name": "release",
"image": "plugins/github-release",
"settings": {
"api_key": {
"from_secret": "github_token",
},
"note": "CHANGELOG.md",
"overwrite": True,
"title": ctx.build.ref.replace("refs/tags/", ""),
"files": [
"retry"
],
},
"when": {
"ref": [
"refs/tags/**",
],
},
}
],
"depends_on": [
"testing",
],
"trigger": {
"ref": [
"refs/heads/master",
"refs/tags/**",
"refs/pull/**",
],
},
}]
def notification(ctx):
return [{
"kind": "pipeline",
"type": "docker",
"name": "notify",
"clone": {
"disable": True,
},
"steps": [
{
"name": "notify",
"image": "plugins/slack",
"settings": {
"webhook": {
"from_secret": "rocketchat_chat_webhook",
},
"channel": "builds",
},
}
],
"depends_on": [
"release",
],
"trigger": {
"ref": [
"refs/heads/master",
"refs/tags/**",
],
"status": [
"success",
"failure",
],
},
}]