47
47
PULL_REQUEST_TITLE : ${{ github.event.pull_request.title }}
48
48
PULL_REQUEST_AUTHOR_NAME : ${{ github.event.pull_request.user.login }}
49
49
PULL_URL : ${{ github.event.pull_request.html_url }}
50
+ PROJECT_CONFIG : ${{ vars.PROJECT_CONFIG}}
50
51
COMMENTS_URL : ${{ github.event.pull_request.comments_url }}
51
52
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
52
53
BRANCH_NAME : ${{ github.ref_name }}
95
96
major, minor, point = map(int, version)
96
97
return f"{major}.{minor}.{point}"
97
98
98
- def generateFixVersionList(jira, projectName, branchName):
99
- cmd = "git tag --list 'hpcc4j_*-release' --sort=-v:refname | head -n 1"
100
- latestVersion = getTagVersionForCmd(cmd)
99
+ def createReleaseTagPattern(projectConfig, major = None, minor = None, point = None):
100
+ releaseTagPrefix = projectConfig.get('tagPrefix')
101
+ releaseTagPostfix = projectConfig.get('tagPostfix')
102
+
103
+ if releaseTagPrefix is None or releaseTagPostfix is None:
104
+ print('Error: PROJECT_CONFIG is missing required fields: tagPrefix and/or tagPostfix')
105
+ sys.exit(1)
106
+
107
+ releaseTagPattern = releaseTagPrefix
108
+ if major is not None:
109
+ releaseTagPattern += str(major) + '\.'
110
+ else:
111
+ releaseTagPattern += '[0-9]+\.'
112
+
113
+ if minor is not None:
114
+ releaseTagPattern += str(minor) + '\.'
115
+ else:
116
+ releaseTagPattern += '[0-9]+\.'
117
+
118
+ if point is not None:
119
+ releaseTagPattern += str(point) + '(-[0-9]+)?'
120
+ else:
121
+ releaseTagPattern += '[0-9]+(-[0-9]+)?'
122
+
123
+ releaseTagPattern += releaseTagPostfix + '$'
124
+
125
+ return releaseTagPattern
126
+
127
+ def getLatestSemVer(projectConfig, major = None, minor = None, point = None):
128
+ cmd = "git tag --list --sort=-v:refname | grep -E '" + createReleaseTagPattern(projectConfig, major, minor, point) + "' | head -n 1"
129
+ return getTagVersionForCmd(cmd)
130
+
131
+ def generateFixVersionList(jira, projectConfig, projectName, branchName):
132
+ latestVersion = getLatestSemVer(projectConfig)
101
133
102
134
# If we are merging into master we assume it is going into the next minor release
103
135
fixVersions = []
@@ -110,14 +142,12 @@ jobs:
110
142
branchVersion = extractVersion(branchVersionMatch.group(1))
111
143
112
144
# Get latest release in branch
113
- findLatestBranchVer = "git tag --list 'hpcc4j_" + str(branchVersion[0]) + "." + str(branchVersion[1]) + "*-release' --sort=-v:refname | head -n 1"
114
- latestBranchVer = getTagVersionForCmd(findLatestBranchVer)
145
+ latestBranchVer = getLatestSemVer(projectConfig, branchVersion[0], branchVersion[1])
115
146
116
147
curMajor = branchVersion[0]
117
148
latestMajor = latestVersion[0]
118
149
while curMajor <= latestMajor:
119
- cmd = "git tag --list 'hpcc4j_" + str(curMajor) + "*-release' --sort=-v:refname | head -n 1"
120
- latestVersionInMajor = getTagVersionForCmd(cmd)
150
+ latestVersionInMajor = getLatestSemVer(projectConfig, curMajor)
121
151
122
152
curMinor = 0
123
153
if curMajor == branchVersion[0]:
@@ -126,7 +156,7 @@ jobs:
126
156
latestMinor = latestVersionInMajor[1]
127
157
128
158
while curMinor <= latestMinor:
129
- latestPointInMinor = getTagVersionForCmd("git tag --list 'hpcc4j_" + str( curMajor) + "." + str( curMinor) + "*-release' --sort=-v:refname | head -n 1" )
159
+ latestPointInMinor = getLatestSemVer(projectConfig, curMajor, curMinor)
130
160
fixVersions.append(buildVersionString([latestPointInMinor[0], latestPointInMinor[1], latestPointInMinor[2] + 2]))
131
161
curMinor += 2
132
162
curMajor += 1
@@ -214,7 +244,20 @@ jobs:
214
244
github_token = os.environ['GITHUB_TOKEN']
215
245
branch_name = os.environ['BRANCH_NAME']
216
246
comments_url = os.environ['COMMENTS_URL']
217
- project_name = 'HPCC4J'
247
+
248
+ projectConfig = json.loads(os.environ['PROJECT_CONFIG'])
249
+ if not isinstance(projectConfig, dict):
250
+ print('Error: PROJECT_CONFIG is not a valid JSON object, aborting.')
251
+ sys.exit(1)
252
+
253
+ if 'tagPrefix' not in projectConfig or 'tagPostfix' not in projectConfig:
254
+ print('Error: PROJECT_CONFIG is missing required fields: tagPrefix and/or tagPostfix')
255
+ sys.exit(1)
256
+
257
+ project_name = projectConfig.get('projectName')
258
+ if project_name is None:
259
+ print('Error: PROJECT_CONFIG is missing required field: projectName')
260
+ sys.exit(1)
218
261
219
262
result = ''
220
263
issuem = re.search("(" + project_name + ")-[0-9]+", title, re.IGNORECASE)
@@ -230,7 +273,7 @@ jobs:
230
273
231
274
result = 'Jirabot Action Result:\n'
232
275
233
- fixVersions = generateFixVersionList(jira, project_name, branch_name)
276
+ fixVersions = generateFixVersionList(jira, projectConfig, project_name, branch_name)
234
277
result += resolveIssue(jira, project_name, issue, fixVersions)
235
278
jira.issue_add_comment(issue_name, result)
236
279
0 commit comments