Skip to content

Commit b8c910e

Browse files
committed
Merge remote-tracking branch 'origin/candidate-9.2.x' into candidate-9.4.x
Signed-off-by: Jake Smith <[email protected]> # Conflicts: # commons-hpcc/pom.xml # dfsclient/pom.xml # pom.xml # wsclient/pom.xml
2 parents 705821b + dc1fc35 commit b8c910e

File tree

2 files changed

+50
-48
lines changed

2 files changed

+50
-48
lines changed

.github/workflows/Jirabot.yml

+9-20
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ jobs:
3838
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3939
GHUB_JIRA_USER_MAP: ${{ vars.GHUB_JIRA_USER_MAP }}
4040
JIRA_ISSUE_PROPERTY_MAP: ${{ vars.JIRA_ISSUE_PROPERTY_MAP }}
41-
JIRA_ISSUE_TRANSITION_MAP: ${{ vars.JIRA_ISSUE_TRANSITION_MAP }}
4241
run: |
4342
import os
4443
import re
@@ -56,24 +55,19 @@ jobs:
5655
else:
5756
return ''
5857
59-
def updateIssue(jira, issue, prAuthor : str, transitionMap: dict, propertyMap: dict, pull_url: str) -> str:
58+
def updateIssue(jira, issue, prAuthor : str, propertyMap: dict, pull_url: str) -> str:
6059
result = ''
6160
6261
issueName = issue['key']
6362
issueFields = issue['fields']
6463
65-
statusName = str(issueFields['status']['name'])
66-
transition = transitionMap.get(statusName, None)
67-
68-
if transition == None:
69-
print('Error: Unable to find transition for status: ' + statusName)
70-
elif transition != '':
71-
try:
72-
jira.issue_transition(issueName, transition)
73-
result += 'Workflow Transition: ' + transition + '\n'
74-
except Exception as error:
75-
transitions = jira.get_issue_transitions(issueName)
76-
result += 'Error: Transition: "' + transition + '" failed with: "' + str(error) + '" Valid transitions=' + str(transitions) + '\n'
64+
try:
65+
transitionId = jira.get_transition_id_to_status_name(issue_name, desiredStatus)
66+
jira.set_issue_status_by_transition_id(issue_name, transitionId)
67+
result += 'Workflow Transition To: ' + desiredStatus + '\n'
68+
except Exception as error:
69+
transitions = jira.get_issue_transitions(issueName)
70+
result += 'Error: Transitioning to: "' + desiredStatus + '" failed with: "' + str(error) + '" Valid transitions=' + str(transitions) + '\n'
7771
7872
prFieldName = propertyMap.get('pullRequestFieldName', 'customfield_10010')
7973
@@ -153,17 +147,12 @@ jobs:
153147
154148
result = 'Jirabot Action Result:\n'
155149
156-
transitionMap = json.loads(os.environ['JIRA_ISSUE_TRANSITION_MAP'])
157-
if not isinstance(transitionMap, dict):
158-
print('Error: JIRA_ISSUE_TRANSITION_MAP is not a valid JSON object, ignoring.')
159-
transitionMap = {}
160-
161150
jiraIssuePropertyMap = json.loads(os.environ['JIRA_ISSUE_PROPERTY_MAP'])
162151
if not isinstance(jiraIssuePropertyMap, dict):
163152
print('Error: JIRA_ISSUE_PROPERTY_MAP is not a valid JSON object, ignoring.')
164153
jiraIssuePropertyMap = {}
165154
166-
result += updateIssue(jira, issue, jiraUser, transitionMap, jiraIssuePropertyMap, pull_url)
155+
result += updateIssue(jira, issue, jiraUser, jiraIssuePropertyMap, pull_url)
167156
jira.issue_add_comment(issue_name, result)
168157
169158
result = 'Jira Issue: ' + jira_url + '/browse/' + issue_name + '\n\n' + result

.github/workflows/JirabotMerge.yml

+41-28
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ jobs:
5050
COMMENTS_URL: ${{ github.event.pull_request.comments_url }}
5151
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5252
BRANCH_NAME: ${{ github.ref_name }}
53-
5453
run: |
5554
import os
5655
import re
@@ -95,9 +94,9 @@ jobs:
9594
major, minor, point = map(int, version)
9695
return f"{major}.{minor}.{point}"
9796
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)
101100
102101
# If we are merging into master we assume it is going into the next minor release
103102
fixVersions = []
@@ -116,7 +115,8 @@ jobs:
116115
curMajor = branchVersion[0]
117116
latestMajor = latestVersion[0]
118117
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)
120120
121121
curMinor = 0
122122
if curMajor == branchVersion[0]:
@@ -131,18 +131,24 @@ jobs:
131131
curMajor += 1
132132
133133
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)
142148
143149
return fixVersions
144150
145-
def resolveIssue(jira, issue, fixVersions) -> str:
151+
def resolveIssue(jira, projectName, issue, fixVersions) -> str:
146152
result = ''
147153
148154
versionsToAdd = []
@@ -159,7 +165,7 @@ jobs:
159165
if not alreadyHasFixVersion:
160166
versionsToAdd.append(addedVersion)
161167
162-
versions = jira.get_project_versions('HPCC4J')
168+
versions = jira.get_project_versions(projectName)
163169
updatedVersionList = []
164170
for v in issueFields['fixVersions']:
165171
updatedVersionList.append({'id' : v['id']})
@@ -178,15 +184,21 @@ jobs:
178184
result += "Error: Unable to find fix version: " + fixVersionName + "\n"
179185
180186
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'
182191
else:
183192
result += "Fix versions already added.\n"
184193
185194
statusName = str(issueFields['status']['name'])
186195
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'
190202
191203
return result
192204
@@ -201,16 +213,12 @@ jobs:
201213
github_token = os.environ['GITHUB_TOKEN']
202214
branch_name = os.environ['BRANCH_NAME']
203215
comments_url = os.environ['COMMENTS_URL']
216+
project_name = 'HPCC4J'
204217
205218
result = ''
206-
issuem = re.search("(HPCC4J|JAPI)-[0-9]+", title)
219+
issuem = re.search("(" + project_name + ")-[0-9]+", title, re.IGNORECASE)
207220
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()
214222
215223
jira = Jira(url=jira_url, username=jirabot_user, password=jirabot_pass, cloud=True)
216224
@@ -221,9 +229,14 @@ jobs:
221229
222230
result = 'Jirabot Action Result:\n'
223231
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)
226234
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)
227240
else:
228241
print('Unable to find Jira issue name in title')
229242

0 commit comments

Comments
 (0)