Last active
February 22, 2024 14:17
-
-
Save mizanRahman/1a019b90f04436b05427e66def9b60f4 to your computer and use it in GitHub Desktop.
Automated PR creation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from github import Github | |
import re | |
import time | |
TOKEN = "ghp_..." | |
dependencies = [ | |
["vehicle-api.version" ,"1.0.2-8177-0927ca8" ] | |
] | |
dry_run=True | |
ticket_number='AMA-1049' | |
ticket_title= 'Update vehicle api version' | |
repo_names = [ | |
"retail-export-service", | |
"retail-vehicle-sync-service", | |
"retail-vehicle-store-service", | |
"retail-vehicle-translation-service", | |
"retail-vehicle-service", | |
"retail-ad-feeder", | |
"retail-inventory-gql-service", | |
"retail-mapping-as24-service", | |
"retail-vehicle-feature-detail-service", | |
"retail-publishing-queue-service", | |
"retail-ad-aggregation-service" | |
] | |
def get_repos(github): | |
repos = [] | |
for repo_name in repo_names: | |
full_repo_name = "wkda/" + repo_name | |
print("Getting repo {0} ".format(full_repo_name)) | |
repo = github.get_repo(full_repo_name); | |
repos.append(repo) | |
return repos | |
def writeToFile(filename, content): | |
f = open(filename, "w") | |
f.write(content) | |
f.close() | |
def update_pom_file(pom_data, property, version): | |
reg_exp = re.compile('(<{}>)(.*?)(</{}>)'.format(property, property)) | |
return re.sub(reg_exp, r"\g<1>%s\g<3>" % version, pom_data) | |
def create_pr(repo, ticket_title, ticket_desc): | |
branch=ticket_title | |
commit_msg = ticket_title + ": " + ticket_desc | |
master_branch = repo.get_branch("master") | |
# create new branch | |
repo.create_git_ref(ref="refs/heads/" + ticket_title, sha=master_branch.commit.sha) | |
print("New branch {0} created in {1}".format(branch, repo.name)); | |
# update the file | |
repo.update_file(pom_file.path, commit_msg, pom_data, pom_file.sha, branch=branch) | |
#create a pr | |
pr = repo.create_pull(title=commit_msg, body=commit_msg, head=branch, base="master") | |
print("PR ", pr.number, " was created ", pr.url.replace("https://api.github.com/repos","https://github.com").replace("pulls","pull")) | |
if __name__ == '__main__': | |
print("Preparing PRs") | |
github = Github(base_url="https://api.github.com", login_or_token=TOKEN) | |
for repo in get_repos(github): | |
print("Checkout Repository: ", repo.name) | |
try: | |
pom_file = repo.get_contents("pom.xml", ref="master") | |
except: | |
print("No pom file found for ", repo.name) | |
continue | |
pom_data = pom_file.decoded_content.decode() | |
for dependency in dependencies: | |
pom_data = update_pom_file(pom_data, dependency[0], dependency[1]) | |
writeToFile("pom.xml", pom_data) | |
if(dry_run==False): | |
create_pr(repo, ticket_number, ticket_title) | |
time.sleep(5) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Step to Run this script:
python3 update_version.py
dry_run=True