From 9d637f6694e43d8e160ec17999f052aaf27e1d0d Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Tue, 6 Nov 2018 15:45:53 +0200 Subject: [PATCH] build_manifest.py: Hardcode the project ids of upstream repos. Since we can't use the group api to query their id, see previous commit, we are going to hard code the upstream project id for the time being. --- gitlab/build_manifest.py | 74 +++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/gitlab/build_manifest.py b/gitlab/build_manifest.py index e478f16169..bb384677fd 100755 --- a/gitlab/build_manifest.py +++ b/gitlab/build_manifest.py @@ -8,21 +8,25 @@ from typing import Dict, Tuple, List from urllib.parse import urlparse # from pprint import pprint -GSTREAMER_MODULES: List[str] = [ - # 'orc', - 'gst-build', - 'gstreamer', - 'gst-plugins-base', - 'gst-plugins-good', - 'gst-plugins-bad', - 'gst-plugins-ugly', - 'gst-libav', - 'gst-devtools', - 'gst-docs', - 'gst-editing-services', - 'gst-omx', - 'gst-python', - 'gst-rtsp-server' +# Each item is a Tuple of (project-path, project-id) +# ex. https://gitlab.freedesktop.org/gstreamer/gst-build +# has project path 'gst-build' and project-id '1342' +# TODO: Named tuples are awesome +GSTREAMER_MODULES: List[Tuple[str, int]] = [ + # ('orc', 1360), + ('gst-build', 1342), + ('gstreamer', 1357), + ('gst-plugins-base', 1352), + ('gst-plugins-good', 1353), + ('gst-plugins-bad', 1351), + ('gst-plugins-ugly', 1354), + ('gst-libav', 1349), + ('gst-devtools', 1344), + ('gst-docs', 1345), + ('gst-editing-services', 1346), + ('gst-omx', 1350), + ('gst-python', 1355), + ('gst-rtsp-server', 1362), ] MANIFEST_TEMPLATE: str = """ @@ -185,9 +189,9 @@ def test_get_hostname(): assert get_hostname(fdo) == 'gitlab.freedesktop.org' -def find_repository_sha(module: str, branchname: str) -> Tuple[str, str]: +def find_repository_sha(module: Tuple[str, int], branchname: str) -> Tuple[str, str]: user_login: str = os.environ["GITLAB_USER_LOGIN"] - project = search_user_namespace(user_login, module) + project = search_user_namespace(user_login, module[0]) # Find a fork in the User's namespace if project: @@ -203,8 +207,24 @@ def find_repository_sha(module: str, branchname: str) -> Tuple[str, str]: return 'user', branch['commit']['id'] print(f"Did not found user branch named {branchname}") - print('Falling back to origin/master') - return 'origin', 'master' + # Check upstream project for a branch + branch = get_project_branch(module[1], branchname) + if branch is not None: + print("Found mathcing branch in upstream project") + print(f"gstreamer/{branchname}") + return 'gstreamer', branch['commit']['id'] + + # Fallback to using upstream master branch + branch = get_project_branch(module[1], 'master') + if branch is not None: + print("Falling back to master branch on upstream project") + print(f"gstreamer/master") + return 'gstreamer', branch['commit']['id'] + + # This should never occur given the upstream fallback above + print("If something reaches that point, please file a bug") + print("https://gitlab.freedesktop.org/gstreamer/gst-ci/issues") + assert False @preserve_ci_vars @@ -214,19 +234,19 @@ def test_find_repository_sha(): del os.environ["READ_PROJECTS_TOKEN"] # This should find the repository in the user namespace - remote, git_ref = find_repository_sha("gst-plugins-good", "1.2") + remote, git_ref = find_repository_sha(("gst-plugins-good", 1353), "1.2") assert remote == "user" assert git_ref == "08ab260b8a39791e7e62c95f4b64fd5b69959325" # This should fallback to upstream master branch since no matching branch was found - remote, git_ref = find_repository_sha("gst-plugins-good", "totally-valid-branch-name") - assert remote == "origin" - assert git_ref == "master" + remote, git_ref = find_repository_sha(("gst-plugins-good", 1353), "totally-valid-branch-name") + assert remote == "gstreamer" # This should fallback to upstream master branch since no repository was found - remote, git_ref = find_repository_sha("totally-valid-project-name", "1.2") - assert remote == "origin" - assert git_ref == "master" + remote, git_ref = find_repository_sha(("totally-valid-project-name", 42), "1.2") + assert remote == "gstreamer" + # This is now the sha of the last commit + # assert git_ref == "master" if __name__ == "__main__": @@ -240,7 +260,7 @@ if __name__ == "__main__": print(f"Checking {module}:", end=' ') current_branch: str = os.environ['CI_COMMIT_REF_NAME'] remote, revision = find_repository_sha(module, current_branch) - projects += project_template.format(module, remote, revision) + projects += project_template.format(module[0], remote, revision) with open('manifest.xml', mode='w') as manifest: print(MANIFEST_TEMPLATE.format(user_remote_url, projects), file=manifest)