Skip to content

Instantly share code, notes, and snippets.

@phucngta
Last active November 18, 2021 13:28
Show Gist options
  • Select an option

  • Save phucngta/9e9b2933fa43a2e9135a1b9af06b1e27 to your computer and use it in GitHub Desktop.

Select an option

Save phucngta/9e9b2933fa43a2e9135a1b9af06b1e27 to your computer and use it in GitHub Desktop.
Auto create merge to Master Branch ERP Core
#!/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