Skip to content

Commit 3603b8e

Browse files
authored
HPCC4J-608 Merge fix version failure (hpcc-systems#715)
Signed-off-by: James McMullan [email protected]
1 parent 2e63d2c commit 3603b8e

File tree

2 files changed

+31
-38
lines changed

2 files changed

+31
-38
lines changed

.github/workflows/Jirabot.yml

Lines changed: 9 additions & 20 deletions
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
@@ -47,24 +46,19 @@ jobs:
4746
import json
4847
from atlassian.jira import Jira
4948
50-
def updateIssue(jira, issue, prAuthor : str, transitionMap: dict, propertyMap: dict, pull_url: str) -> str:
49+
def updateIssue(jira, issue, prAuthor : str, propertyMap: dict, pull_url: str) -> str:
5150
result = ''
5251
5352
issueName = issue['key']
5453
issueFields = issue['fields']
5554
56-
statusName = str(issueFields['status']['name'])
57-
transition = transitionMap.get(statusName, None)
58-
59-
if transition == None:
60-
print('Error: Unable to find transition for status: ' + statusName)
61-
elif transition != '':
62-
try:
63-
jira.issue_transition(issueName, transition)
64-
result += 'Workflow Transition: ' + transition + '\n'
65-
except Exception as error:
66-
transitions = jira.get_issue_transitions(issueName)
67-
result += 'Error: Transition: "' + transition + '" failed with: "' + str(error) + '" Valid transitions=' + str(transitions) + '\n'
55+
try:
56+
transitionId = jira.get_transition_id_to_status_name(issue_name, desiredStatus)
57+
jira.set_issue_status_by_transition_id(issue_name, transitionId)
58+
result += 'Workflow Transition To: ' + desiredStatus + '\n'
59+
except Exception as error:
60+
transitions = jira.get_issue_transitions(issueName)
61+
result += 'Error: Transitioning to: "' + desiredStatus + '" failed with: "' + str(error) + '" Valid transitions=' + str(transitions) + '\n'
6862
6963
prFieldName = propertyMap.get('pullRequestFieldName', 'customfield_10010')
7064
@@ -141,17 +135,12 @@ jobs:
141135
142136
result = 'Jirabot Action Result:\n'
143137
144-
transitionMap = json.loads(os.environ['JIRA_ISSUE_TRANSITION_MAP'])
145-
if not isinstance(transitionMap, dict):
146-
print('Error: JIRA_ISSUE_TRANSITION_MAP is not a valid JSON object, ignoring.')
147-
transitionMap = {}
148-
149138
jiraIssuePropertyMap = json.loads(os.environ['JIRA_ISSUE_PROPERTY_MAP'])
150139
if not isinstance(jiraIssuePropertyMap, dict):
151140
print('Error: JIRA_ISSUE_PROPERTY_MAP is not a valid JSON object, ignoring.')
152141
jiraIssuePropertyMap = {}
153142
154-
result += updateIssue(jira, issue, jiraUser, transitionMap, jiraIssuePropertyMap, pull_url)
143+
result += updateIssue(jira, issue, jiraUser, jiraIssuePropertyMap, pull_url)
155144
jira.issue_add_comment(issue_name, result)
156145
157146
result = 'Jira Issue: ' + jira_url + '/browse/' + issue_name + '\n\n' + result

.github/workflows/JirabotMerge.yml

Lines changed: 22 additions & 18 deletions
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]:
@@ -132,17 +132,19 @@ jobs:
132132
133133
for fixVersion in fixVersions:
134134
alreadyHasFixVersion = False
135-
versions = jira.get_project_versions('HPCC4J')
135+
versions = jira.get_project_versions(projectName)
136136
for v in versions:
137137
if v['name'] == fixVersion:
138138
alreadyHasFixVersion = True
139139
140140
if not alreadyHasFixVersion:
141-
jira.add_version(fixVersion, 'HPCC4J', fixVersion)
141+
project = jira.get_project(projectName)
142+
projectId = project['id']
143+
jira.add_version(projectName, projectId, fixVersion)
142144
143145
return fixVersions
144146
145-
def resolveIssue(jira, issue, fixVersions) -> str:
147+
def resolveIssue(jira, projectName, issue, fixVersions) -> str:
146148
result = ''
147149
148150
versionsToAdd = []
@@ -159,7 +161,7 @@ jobs:
159161
if not alreadyHasFixVersion:
160162
versionsToAdd.append(addedVersion)
161163
162-
versions = jira.get_project_versions('HPCC4J')
164+
versions = jira.get_project_versions(projectName)
163165
updatedVersionList = []
164166
for v in issueFields['fixVersions']:
165167
updatedVersionList.append({'id' : v['id']})
@@ -184,8 +186,8 @@ jobs:
184186
185187
statusName = str(issueFields['status']['name'])
186188
if statusName != 'Resolved':
187-
transition = 'Accept Pull Request'
188-
jira.issue_transition(issue_name, transition)
189+
transitionId = jira.get_transition_id_to_status_name(issue_name, 'Resolved')
190+
jira.set_issue_status_by_transition_id(issue_name, transitionId)
189191
result += "Workflow Transition: 'Resolve issue'\n"
190192
191193
return result
@@ -201,17 +203,13 @@ jobs:
201203
github_token = os.environ['GITHUB_TOKEN']
202204
branch_name = os.environ['BRANCH_NAME']
203205
comments_url = os.environ['COMMENTS_URL']
206+
project_name = 'HPCC4J'
204207
205208
print("Attempting to close out Jira issue: %s %s %s" % (title, user, comments_url))
206209
result = ''
207-
issuem = re.search("(HPCC4J|JAPI)-[0-9]+", title)
210+
issuem = re.search("(" + project_name + ")-[0-9]+", title, re.IGNORECASE)
208211
if issuem:
209-
nameCorrectionPattern = re.compile("hpcc4j", re.IGNORECASE)
210-
issue_name = nameCorrectionPattern.sub("HPCC4J",issuem.group())
211-
212-
options = {
213-
'server': jira_url
214-
}
212+
issue_name = issuem.group()
215213
216214
jira = Jira(url=jira_url, username=jirabot_user, password=jirabot_pass, cloud=True)
217215
@@ -225,6 +223,12 @@ jobs:
225223
fixVersions = generateFixVersionList(jira, branch_name)
226224
result += resolveIssue(jira, issue, fixVersions)
227225
jira.issue_add_comment(issue_name, result)
226+
227+
# Escape the result for JSON
228+
result = json.dumps(result)
229+
230+
curlCommand = 'curl -X POST %s -H "Content-Type: application/json" -H "Authorization: token %s" --data \'{ "body": %s }\'' % ( comments_url, github_token, result )
231+
os.system(curlCommand)
228232
else:
229233
print('Unable to find Jira issue name in title')
230234

0 commit comments

Comments
 (0)