Loading testing/merge_test.py +30 −1 Original line number Diff line number Diff line Loading @@ -2,8 +2,9 @@ import os import pprint import requests import json import subprocess print ("Hello world") print ("Hello world v1.1") crCommitBranch = os.environ.get("CI_COMMIT_REF_NAME", "cr/TS33128/0163") apiUrl = os.environ.get("CI_API_V4_URL", "https://forge.3gpp.org/rep/api/v4") Loading @@ -14,6 +15,13 @@ def gapi (query): r = requests.get(url) return json.loads(r.text) def do (commandline): print (" Attempting: " + commandline) completedProc = subprocess.run(commandline) print (" STDOUT > " + "empty" if completedProc.stdout is None else completedProc.stdout) print (" STDERR > " + "empty" if completedProc.stderr is None else completedProc.stderr) print (f" Completed with code {completedProc.returncode}") return completedProc.returncode == 0 print ("Searching for corresponding MR...") Loading @@ -33,5 +41,26 @@ print (f"Target branch is {mr['target_branch']}") print ("Searching for open MRs targeting same branch...") mrs = gapi(f"merge_requests?target_branch={mr['target_branch']}&state=opened") mrs = [m for m in mrs if m['reference'] != mr['reference']] print (f"{len(mrs)} MRs found") mergeConflicts = [] for mr in mrs: source_branch = mr['source_branch'] print (source_branch) try: do(f"git fetch origin {source_branch}:{source_branch}") if not do(f"git merge --no-commit {source_branch}"): print ("Merge NOT OK") mergeConflicts.append(source_branch) else: print ("Merge OK") except: mergeConflicts.append(source_branch) raise finally: do("git merge --abort") print (f"Merge conflicts with following branches: {mergeConflicts}") exit(len(mergeConflicts)) No newline at end of file Loading
testing/merge_test.py +30 −1 Original line number Diff line number Diff line Loading @@ -2,8 +2,9 @@ import os import pprint import requests import json import subprocess print ("Hello world") print ("Hello world v1.1") crCommitBranch = os.environ.get("CI_COMMIT_REF_NAME", "cr/TS33128/0163") apiUrl = os.environ.get("CI_API_V4_URL", "https://forge.3gpp.org/rep/api/v4") Loading @@ -14,6 +15,13 @@ def gapi (query): r = requests.get(url) return json.loads(r.text) def do (commandline): print (" Attempting: " + commandline) completedProc = subprocess.run(commandline) print (" STDOUT > " + "empty" if completedProc.stdout is None else completedProc.stdout) print (" STDERR > " + "empty" if completedProc.stderr is None else completedProc.stderr) print (f" Completed with code {completedProc.returncode}") return completedProc.returncode == 0 print ("Searching for corresponding MR...") Loading @@ -33,5 +41,26 @@ print (f"Target branch is {mr['target_branch']}") print ("Searching for open MRs targeting same branch...") mrs = gapi(f"merge_requests?target_branch={mr['target_branch']}&state=opened") mrs = [m for m in mrs if m['reference'] != mr['reference']] print (f"{len(mrs)} MRs found") mergeConflicts = [] for mr in mrs: source_branch = mr['source_branch'] print (source_branch) try: do(f"git fetch origin {source_branch}:{source_branch}") if not do(f"git merge --no-commit {source_branch}"): print ("Merge NOT OK") mergeConflicts.append(source_branch) else: print ("Merge OK") except: mergeConflicts.append(source_branch) raise finally: do("git merge --abort") print (f"Merge conflicts with following branches: {mergeConflicts}") exit(len(mergeConflicts)) No newline at end of file