50
50
COMMENTS_URL : ${{ github.event.pull_request.comments_url }}
51
51
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
52
52
BRANCH_NAME : ${{ github.ref_name }}
53
-
54
53
run : |
55
54
import os
56
55
import re
95
94
major, minor, point = map(int, version)
96
95
return f"{major}.{minor}.{point}"
97
96
98
- def generateFixVersionList(jira, branchName):
99
-
100
- latestVersion = getTagVersionForCmd("git tag --list 'hpcc4j_*-release' --sort=-v:refname | head -n 1" )
97
+ def generateFixVersionList(jira, projectName, branchName):
98
+ cmd = "git tag --list 'hpcc4j_*-release' --sort=-v:refname | head -n 1"
99
+ latestVersion = getTagVersionForCmd(cmd )
101
100
102
101
# If we are merging into master we assume it is going into the next minor release
103
102
fixVersions = []
@@ -116,7 +115,8 @@ jobs:
116
115
curMajor = branchVersion[0]
117
116
latestMajor = latestVersion[0]
118
117
while curMajor <= latestMajor:
119
- latestVersionInMajor = getTagVersionForCmd("git tag --list 'hpcc4j_" + str(curMajor) + "*-release' --sort=-v:refname | head -n 1")
118
+ cmd = "git tag --list 'hpcc4j_" + str(curMajor) + "*-release' --sort=-v:refname | head -n 1"
119
+ latestVersionInMajor = getTagVersionForCmd(cmd)
120
120
121
121
curMinor = 0
122
122
if curMajor == branchVersion[0]:
@@ -131,18 +131,24 @@ jobs:
131
131
curMajor += 1
132
132
133
133
for fixVersion in fixVersions:
134
- alreadyHasFixVersion = False
135
- versions = jira.get_project_versions('HPCC4J')
136
- for v in versions:
137
- if v['name'] == fixVersion:
138
- alreadyHasFixVersion = True
139
-
140
- if not alreadyHasFixVersion:
141
- jira.add_version(fixVersion, 'HPCC4J', fixVersion)
134
+ try:
135
+ alreadyHasFixVersion = False
136
+ versions = jira.get_project_versions(projectName)
137
+ for v in versions:
138
+ if v['name'] == fixVersion:
139
+ alreadyHasFixVersion = True
140
+
141
+ if not alreadyHasFixVersion:
142
+ project = jira.get_project(projectName)
143
+ projectId = project['id']
144
+ jira.add_version(projectName, projectId, fixVersion)
145
+ catch Exception as error:
146
+ print('Error: Unable to add fix version: ' + fixVersion + ' with: ' + str(error))
147
+ sys.exit(1)
142
148
143
149
return fixVersions
144
150
145
- def resolveIssue(jira, issue, fixVersions) -> str:
151
+ def resolveIssue(jira, projectName, issue, fixVersions) -> str:
146
152
result = ''
147
153
148
154
versionsToAdd = []
@@ -159,7 +165,7 @@ jobs:
159
165
if not alreadyHasFixVersion:
160
166
versionsToAdd.append(addedVersion)
161
167
162
- versions = jira.get_project_versions('HPCC4J' )
168
+ versions = jira.get_project_versions(projectName )
163
169
updatedVersionList = []
164
170
for v in issueFields['fixVersions']:
165
171
updatedVersionList.append({'id' : v['id']})
@@ -178,15 +184,21 @@ jobs:
178
184
result += "Error: Unable to find fix version: " + fixVersionName + "\n"
179
185
180
186
if len(versionsToAdd) > 0:
181
- jira.update_issue_field(issueName, {'fixVersions': updatedVersionList})
187
+ try:
188
+ jira.update_issue_field(issueName, {'fixVersions': updatedVersionList})
189
+ except Exception as error:
190
+ result += 'Error: Updating fix versions failed with: "' + str(error) + '\n'
182
191
else:
183
192
result += "Fix versions already added.\n"
184
193
185
194
statusName = str(issueFields['status']['name'])
186
195
if statusName != 'Resolved':
187
- transition = 'Accept Pull Request'
188
- jira.issue_transition(issue_name, transition)
189
- result += "Workflow Transition: 'Resolve issue'\n"
196
+ try:
197
+ transitionId = jira.get_transition_id_to_status_name(issueName, 'Resolved')
198
+ jira.set_issue_status_by_transition_id(issueName, transitionId)
199
+ result += "Workflow Transition: 'Resolve issue'\n"
200
+ except Exception as error:
201
+ result += 'Error: Transitioning to: "Resolved" failed with: "' + str(error) + '\n'
190
202
191
203
return result
192
204
@@ -201,16 +213,12 @@ jobs:
201
213
github_token = os.environ['GITHUB_TOKEN']
202
214
branch_name = os.environ['BRANCH_NAME']
203
215
comments_url = os.environ['COMMENTS_URL']
216
+ project_name = 'HPCC4J'
204
217
205
218
result = ''
206
- issuem = re.search("(HPCC4J|JAPI )-[0-9]+", title)
219
+ issuem = re.search("(" + project_name + " )-[0-9]+", title, re.IGNORECASE )
207
220
if issuem:
208
- nameCorrectionPattern = re.compile("hpcc4j", re.IGNORECASE)
209
- issue_name = nameCorrectionPattern.sub("HPCC4J",issuem.group())
210
-
211
- options = {
212
- 'server': jira_url
213
- }
221
+ issue_name = issuem.group()
214
222
215
223
jira = Jira(url=jira_url, username=jirabot_user, password=jirabot_pass, cloud=True)
216
224
@@ -221,9 +229,14 @@ jobs:
221
229
222
230
result = 'Jirabot Action Result:\n'
223
231
224
- fixVersions = generateFixVersionList(jira, branch_name)
225
- result += resolveIssue(jira, issue, fixVersions)
232
+ fixVersions = generateFixVersionList(jira, project_name, branch_name)
233
+ result += resolveIssue(jira, project_name, issue, fixVersions)
226
234
jira.issue_add_comment(issue_name, result)
235
+
236
+ # Escape the result for JSON
237
+ result = json.dumps(result)
238
+
239
+ subprocess.run(['curl', '-X', 'POST', comments_url, '-H', 'Content-Type: application/json', '-H', f'Authorization: token {github_token}', '--data', f'{{ "body": {result} }}'], check=True)
227
240
else:
228
241
print('Unable to find Jira issue name in title')
229
242
0 commit comments