-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease
executable file
·57 lines (49 loc) · 2.04 KB
/
release
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
#!/usr/bin/env python
import contextlib
import json
import os
import sys
import urllib
ORG_AND_PROJECT = "1and1/bill-of-materials-maven-plugin"
class GithubApi(object):
def __init__(self, org_and_project, milestone):
self._base_url = "https://api.github.com/repos/%s" % org_and_project
self._milestone = milestone
self.milestone_info = None
self._fetch_milestone_info()
def retrieve_open_issues(self):
milestone_ = "%s/issues?milestone=%s&state=open" % (self._base_url, self._milestone)
with contextlib.closing(urllib.urlopen(milestone_)) as h:
return json.load(h)
def _fetch_milestone_info(self):
milestones = "%s/milestones/%s" % (self._base_url, self._milestone)
with contextlib.closing(urllib.urlopen(milestones)) as h:
self.milestone_info = json.load(h)
def has_open_issues(self):
return self.milestone_info["open_issues"] > 0
if __name__ == "__main__":
if os.environ.get("GPG_AGENT_INFO") is None:
sys.exit("GPG_AGENT not started")
if len(sys.argv) != 3:
sys.exit("Usage: %s previousVersion milestone, e.g. %s 1.3.10 20" % (sys.argv[0], sys.argv[0]))
previous_version = sys.argv[1]
milestone = sys.argv[2]
gh = GithubApi(ORG_AND_PROJECT, milestone)
if gh.has_open_issues():
open_issues = gh.retrieve_open_issues()
sys.exit("Found open issues on github for milestone %s (title: %s):\n%s" % (
milestone,
gh.milestone_info["title"],
"\n".join("#%(number)d %(title)s" % issue for issue in open_issues)
)
)
release_version = gh.milestone_info["title"]
cmd = """\
mvn \
-Darguments="-DpreviousVersion=%(previous_version)s -Dmilestone=%(milestone)s" \
-DreleaseVersion=%(release_version)s \
-DpreparationGoals="clean deploy changes:announcement-generate -DperformRelease=true" release:prepare
""" % locals()
raw_input("About to execute:\n%s\nHit enter to proceed, CTRL+D to cancel" % cmd)
os.system(cmd)
os.system("mvn release:clean")