Disable the redundant github issue update job
* airship-airshipctl-update-github-issues job adds comments to related github issue on PS merge based on the tag(Realtes-To/Closes) in commit message. * airshipbot is already doing the job of adding comments to issues on new PSs and updating the status (closed, reopen) as applicable. * So the job airship-airshipctl-update-github-issues is redundant when airshipbot is running. Change-Id: I2c6fa748d3334384bf5b31c87d9501a006a153c1 Relates-To: #502
This commit is contained in:
parent
a0cfddab1b
commit
d4bae30fb3
@ -1,34 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
- hosts: primary
|
||||
tasks:
|
||||
- name: Install python setuptools
|
||||
package:
|
||||
name:
|
||||
- python3-pip
|
||||
- python3-setuptools
|
||||
state: present
|
||||
become: yes
|
||||
|
||||
- name: Install script dependencies
|
||||
pip:
|
||||
name:
|
||||
- PyGithub==1.46
|
||||
executable: pip3
|
||||
- name: Run python script
|
||||
script: >
|
||||
update_github_issues.py "{{ github_credentials.token }}" \
|
||||
"{{ zuul.message | b64decode }}" \
|
||||
"{{ zuul.change_url }}"
|
||||
args:
|
||||
executable: python3
|
@ -1,82 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
import logging
|
||||
import re
|
||||
import sys
|
||||
|
||||
import github
|
||||
|
||||
GH_TOKEN = sys.argv[1]
|
||||
ZUUL_MESSAGE = sys.argv[2]
|
||||
GERRIT_URL = sys.argv[3]
|
||||
REPO_NAME = 'airshipit/airshipctl'
|
||||
PROCESS_LABELS = ['wip', 'ready for review', 'triage', 'blocked']
|
||||
|
||||
|
||||
def construct_issue_list(match_list: list) -> set:
|
||||
new_list = []
|
||||
for _issue in match_list:
|
||||
try:
|
||||
new_list.append(int(_issue))
|
||||
except ValueError:
|
||||
logging.warning(f'Value {_issue} could not be converted to `int` type')
|
||||
return set(new_list)
|
||||
|
||||
|
||||
def parse_issue_number(commit_msg: str) -> dict:
|
||||
# Searches for Relates-To or Closes tags first to match and return
|
||||
logging.debug(f'Parsing commit message: {commit_msg}')
|
||||
related = re.findall(r'(?<=Relates-To: #)([0-9]+?)(?=\n)', commit_msg)
|
||||
logging.debug(f'Captured related issues: {related}')
|
||||
closes = re.findall(r'(?<=Closes: #)([0-9]+?)(?=\n)', commit_msg)
|
||||
logging.debug(f'Captured closes issues: {closes}')
|
||||
if related or closes:
|
||||
return {
|
||||
'related': construct_issue_list(related),
|
||||
'closes': construct_issue_list(closes)
|
||||
}
|
||||
# If no Relates-To or Closes tags are defined, find legacy [#X] style tags
|
||||
logging.debug('Falling back to legacy tags')
|
||||
legacy_matches = re.findall(r'(?<=\[#)([0-9]+?)(?=\])', commit_msg)
|
||||
logging.debug(f'Captured legacy issues: {legacy_matches}')
|
||||
if not legacy_matches:
|
||||
return {}
|
||||
return {
|
||||
'related': construct_issue_list(legacy_matches)
|
||||
}
|
||||
|
||||
|
||||
def remove_duplicated_issue_numbers(issue_dict: dict) -> dict:
|
||||
if 'closes' in issue_dict:
|
||||
issue_dict['related'] = [x for x in issue_dict.get('related', []) if x not in issue_dict['closes']]
|
||||
return issue_dict
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
issue_number_dict = parse_issue_number(ZUUL_MESSAGE)
|
||||
issue_number_dict = remove_duplicated_issue_numbers(issue_number_dict)
|
||||
gh = github.Github(GH_TOKEN)
|
||||
repo = gh.get_repo(REPO_NAME)
|
||||
for key, issue_list in issue_number_dict.items():
|
||||
for issue_number in issue_list:
|
||||
issue = repo.get_issue(number=issue_number)
|
||||
comment_msg = ''
|
||||
link_exists = False
|
||||
if key == 'closes':
|
||||
issue.create_comment(f'The [Change]({GERRIT_URL}) that closes this issue was merged.')
|
||||
for label in PROCESS_LABELS:
|
||||
try:
|
||||
issue.remove_from_labels(label)
|
||||
except github.GithubException:
|
||||
pass
|
||||
else:
|
||||
issue.create_comment(f'A [Related Change]({GERRIT_URL} was merged. This issue may be ready to close.')
|
@ -49,15 +49,6 @@
|
||||
nodeset: airship-airshipctl-single-node
|
||||
voting: false
|
||||
|
||||
- job:
|
||||
name: airship-airshipctl-update-github-issues
|
||||
description: Updates and/or closes related issues on Github on merge
|
||||
run: playbooks/airship-airshipctl-update-github-issues.yaml
|
||||
nodeset: airship-airshipctl-single-node
|
||||
secrets:
|
||||
- name: github_credentials
|
||||
secret: airship_airshipctl_airshipit_github_token
|
||||
|
||||
- job:
|
||||
name: airship-airshipctl-build-image
|
||||
nodeset: airship-airshipctl-single-node
|
||||
|
@ -61,7 +61,6 @@
|
||||
promote:
|
||||
jobs:
|
||||
- promote-airship-project-docs: *docs
|
||||
- airship-airshipctl-update-github-issues
|
||||
tag:
|
||||
jobs:
|
||||
- airship-airshipctl-upload-git-mirror
|
||||
|
Loading…
Reference in New Issue
Block a user