Skip to content
Snippets Groups Projects
Commit 4452c5cb authored by Jonas Höppner's avatar Jonas Höppner
Browse files

CI: Implement that a merge-request may also be specified with project!number

Before only the ID was used but the CI_OPEN_MERGE_REQUESTS variable has
the complete path.
parent e86d320a
No related branches found
No related tags found
No related merge requests found
......@@ -97,14 +97,11 @@ def main():
manifest_project = common.get_project(gitlab, args.manifest_project)
project = common.get_project(gitlab, args.project)
try:
merge_request = project.mergerequests.get(
args.merge_request, retry_transient_errors=True
)
except GitlabGetError as e:
merge_request = common.get_merge_request( project, args.merge_request)
if merge_request is None:
sys.exit(
"ERROR: could not get %s!%s: %s"
% (project.name, args.merge_request, e.error_message)
"ERROR: could not get %s %s"
% (project.name, args.merge_request)
)
if check_if_integration_branch_is_up_to_date(
......
......@@ -121,6 +121,7 @@ def commit_and_push(project: Project, repo: Repo, branch, message, name, email):
"""Commit and push to a repo branch"""
author = Actor(name, email)
repo.index.commit(message, author=author, committer=author)
print(repo.git.log("--oneline", "-n", "5"))
# Push commit
try:
......@@ -134,7 +135,8 @@ def commit_and_push(project: Project, repo: Repo, branch, message, name, email):
revision = repo.head.commit.hexsha
print("Pushed new commit:")
print(project.web_url + "/-/commit/" + revision)
print(repo.git.show("--summary", "--decorate"))
print(repo.git.log("--oneline", "-n", "5"))
#print(repo.git.show("--summary", "--decorate"))
return revision
......@@ -160,3 +162,17 @@ def extract_message_body(msg):
msg = msg[1:]
return msg
def get_merge_request( project: Project, merge_request ):
""" Return a gitlab mergereqest specified either by id or by link """
# MR may also be specified as
# SECO-Northern-Europe/yocto/infrastructure/ci-test/minimal-bar!115
if "!" in merge_request:
merge_request = int(merge_request.split("!")[-1])
logging.debug("Number of MR: %d", merge_request)
try:
mr = project.mergerequests.get(merge_request, retry_transient_errors=True)
except GitlabGetError:
return None
return mr
......@@ -148,7 +148,7 @@ check:
rules:
- if: $CI_MERGE_REQUEST_IID
# Explicitly allow externally triggered pipelines in every case
- if: $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "api"
# TODO disabled for now, - if: $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "api"
needs: ["integrate"]
tags:
- infrastructure
......
......@@ -70,7 +70,7 @@ def integrate_into_manifest(
#logging.debug("Fetch:%s", fetch)
logging.debug("Heads: %s", manifest_repo.heads)
manifest_repo.heads[integration_branch].checkout()
integration_branch = ref.name
print(manifest_repo.git.log("--oneline", "-n", "5"))
break
if integration_branch is None:
......@@ -167,6 +167,7 @@ def integrate_into_manifest(
gitlab.user.username,
gitlab.user.email,
)
logging.debug("New revision in manifest: %s", manifest_revision)
return manifest_revision
......@@ -256,27 +257,12 @@ def main():
logging.debug("Project: %s", project.name )
logging.debug("Merge Request: %s", args.merge_request)
# MR may also be specified as
# SECO-Northern-Europe/yocto/infrastructure/ci-test/minimal-bar!115
if args.merge_request.startswith(args.project):
mr_number = int(args.merge_request.split("!")[-1])
logging.debug("Number of MR: %d", mr_number)
try:
merge_request = project.mergerequests.get(mr_number, retry_transient_errors=True)
except GitlabGetError as e:
sys.exit(
"ERROR: could not get %s!%s: %s"
% (project.name, args.merge_request, e.error_message)
)
else:
# Get the merge request by passed id
try:
merge_request = project.mergerequests.get(args.merge_request, retry_transient_errors=True)
except GitlabGetError as e:
sys.exit(
"ERROR: could not get %s!%s: %s"
% (project.name, args.merge_request, e.error_message)
)
merge_request = common.get_merge_request( project, args.merge_request)
if merge_request is None:
sys.exit(
"ERROR: could not get %s %s"
% (project.name, args.merge_request)
)
manifest_revision = integrate_into_manifest(
manifest_project=manifest_project,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment