Last active
November 18, 2021 13:28
-
-
Save phucngta/9e9b2933fa43a2e9135a1b9af06b1e27 to your computer and use it in GitHub Desktop.
Auto create merge to Master Branch ERP Core
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
| #!/usr/bin/env python3 | |
| import gitlab | |
| import os | |
| CI_SERVER_HOST = os.environ['CI_SERVER_HOST'] | |
| SERVER_URL = f'https://{CI_SERVER_HOST}' | |
| GITLAB_PERSONAL_TOKEN = os.environ['GITLAB_PERSONAL_TOKEN'] | |
| CI_COMMIT_REF_NAME = os.environ['CI_COMMIT_REF_NAME'] | |
| gl = gitlab.Gitlab(SERVER_URL, private_token=GITLAB_PERSONAL_TOKEN) | |
| project_name_with_namespace = "team_docker/besco_erp_v13e" | |
| project = gl.projects.get(project_name_with_namespace) | |
| last_merge = project.mergerequests.list(query_parameters={'target_branch': CI_COMMIT_REF_NAME})[0] | |
| if CI_COMMIT_REF_NAME in ['dev-accounting-MD', 'dev-masterdata-MD', 'dev-operation-MD']: | |
| target_branchs = ['1.1.1.MĐ'] | |
| elif CI_COMMIT_REF_NAME in ['dev-accounting-VNW', 'dev-masterdata-VNW', 'dev-operation-VNW']: | |
| target_branchs = ['1.1.1.VNW'] | |
| def create_merge_request(): | |
| for tg_branch in target_branchs: | |
| mrs = project.mergerequests.list( | |
| query_parameters={ | |
| 'state': 'opened', 'source_branch': CI_COMMIT_REF_NAME, 'target_branch': tg_branch} | |
| ) | |
| if not mrs: | |
| print(f"Create new Merge Request branch {CI_COMMIT_REF_NAME} into {tg_branch}") | |
| mr = project.mergerequests.create( | |
| { | |
| 'source_branch': CI_COMMIT_REF_NAME, | |
| 'target_branch': tg_branch, | |
| 'title': f"{last_merge.title} [{CI_COMMIT_REF_NAME} => {tg_branch}]" | |
| } | |
| ) | |
| else: | |
| mr = mrs[0] | |
| if not mr.changes()['changes']: | |
| print(f"Close Empty Merge Request ({CI_COMMIT_REF_NAME} into {tg_branch})") | |
| mr.state_event = 'close' | |
| mr.save() | |
| if __name__ == "__main__": | |
| create_merge_request() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment