[sysadmin-bin] Add script for configuring GitHub mirror in GitLab
- From: Bartłomiej Piotrowski <bpiotrowski src gnome org>
- To: gnome-sysadmin gnome org,commits-list gnome org
- Subject: [sysadmin-bin] Add script for configuring GitHub mirror in GitLab
- Date: Fri, 17 Jul 2020 09:46:38 +0000 (UTC)
commit af3a35e561c2d42e0e39dbfcdf386255b0a6f3ab
Author: Bartłomiej Piotrowski <bpiotrowski gnome org>
Date: Fri Jul 17 11:46:11 2020 +0200
Add script for configuring GitHub mirror in GitLab
gitlab/mirror2github | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
---
diff --git a/gitlab/mirror2github b/gitlab/mirror2github
new file mode 100755
index 0000000..3bcb09d
--- /dev/null
+++ b/gitlab/mirror2github
@@ -0,0 +1,61 @@
+#!/usr/bin/python3
+import os
+import sys
+
+import gitlab
+import github
+from github.GithubException import UnknownObjectException
+
+
+def get_token(token_env, token_filename):
+ token = os.getenv(token_env)
+ token_path = os.path.join("/home/admin/secret", token_filename)
+
+ if not token:
+ if os.path.exists(token_path):
+ with open(token_path) as f:
+ tokenfile = f.readline()
+ token = tokenfile.rstrip().split("=")[1]
+ else:
+ print(f"Could not find {token_env} token", file=sys.stderr)
+ sys.exit(1)
+
+
+def main():
+ gitlab_token = get_token("GITLAB_TOKEN", "gitlab_rw")
+ github_token = get_token("GITHUB_TOKEN", "github_rw")
+
+ groups = ["GNOME"]
+ gl = gitlab.Gitlab(
+ "https://gitlab.gnome.org", private_token=gitlab_token, per_page=100
+ )
+ gh = github.Github(github_token)
+ gh_org = gh.get_organization("GNOME")
+
+ for group_name in groups:
+ group = gl.groups.get(group_name, lazy=True)
+ projects = group.projects.list(all=True)
+
+ for prj in projects:
+ mirror_settings = {
+ "description": f"Read-only mirror of {prj.web_url}",
+ "homepage": prj.web_url,
+ "has_issues": False,
+ "has_wiki": False,
+ "default_branch": prj.default_branch,
+ }
+
+ try:
+ gh_mirror = gh_org.get_repo(prj.name)
+ gh_mirror.update(**mirror_settings)
+ except UnknownObjectException:
+ gh_mirror = gh_org.create_repo(prj.name, **mirror_settings)
+
+ prj = gl.projects.get(prj.id, lazy=True)
+ mirrors = prj.remote_mirrors.list(all=True, lazy=True)
+ if not len(mirrors):
+ prj.remote_mirrors.create({"url": gh_mirror.ssh_url, "enabled": True})
+
+
+if __name__ == '__main__':
+ main()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]