From 45598962bb1a260ce3ef7c3afb158f2c0b2c4132 Mon Sep 17 00:00:00 2001
From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de>
Date: Mon, 7 Jan 2019 19:29:49 +0100
Subject: [PATCH] Add uploading packages

---
 .gitlab-ci.yml   |  4 +++-
 packages.yml     |  1 +
 scripts/build.py | 24 +++++++++++++++++++-----
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c436982..c331bd6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -6,13 +6,15 @@ before_script:
   - echo "deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free" >> /etc/apt/sources.list
   - sort /etc/apt/sources.list | uniq > sources.list.new
   - mv sources.list.new /etc/apt/sources.list
-  - cat /etc/apt/sources.list
   - apt-get update
   - apt-get install -y dpkg-dev quilt devscripts
   - python3 -m venv venv
   - source venv/bin/activate
   - pip install wheel
   - pip install -r requirements.txt
+  - mkdir -p ~/.ssh
+  - echo $DEPLOY_KEY | base64 --decode > ~/.ssh/id_ed25519
+  - chmod go-rw ~/.ssh/id_ed25519
 
 stages:
   - build
diff --git a/packages.yml b/packages.yml
index 2c3b4d5..f9daad4 100644
--- a/packages.yml
+++ b/packages.yml
@@ -1,6 +1,7 @@
 maintainer:
   name: FSMPI Admin-Team
   mail: admin@fsmpi.rwth-aachen.de
+upload_target: repo@repo.fsmpi.rwth-aachen.de:/srv/repo/incoming/
 packages:
   - name: adcli
     version: 0.8.2-1.1-fsmpi
diff --git a/scripts/build.py b/scripts/build.py
index 128fcd5..2b9cb43 100755
--- a/scripts/build.py
+++ b/scripts/build.py
@@ -67,14 +67,10 @@ def build_package(repo_dir, package_dir, name,
 
         workdir = os.path.join(tempdir, pkg_dir)
 
-        print("Content of tempdir:", os.listdir(tempdir))
-        print("Content of workdir:", os.listdir(workdir))
 
         if additional_content is not None:
-            print("applying additional content")
             for content in additional_content:
                 target_dir = content["target_dir"]
-                print("applying", content, "in", target_dir)
                 os.chdir(os.path.join(workdir, target_dir))
                 if "patch_dir" in content:
                     abs_patch_dir = os.path.join(
@@ -101,7 +97,6 @@ def build_package(repo_dir, package_dir, name,
         for entry in _get_log_entries():
             run_checked(command + [entry])
 
-        print("building")
         command = ["apt-get", "build-dep", "-y", name]
         run_checked(command)
 
@@ -117,6 +112,22 @@ def build_package(repo_dir, package_dir, name,
             shutil.move(os.path.join(tempdir, filename), package_dir)
 
 
+def upload_packages(package_dir, upload_target, key_file=None):
+    ssh_args = ["ssh", "-o", "StrictHostKeyChecking=no"]
+    if key_file:
+        ssh_args.extend(["-i", key_file])
+    if not package_dir.endswith("/"):
+        package_dir += "/"
+    command = [ 
+        "rsync",
+        "--recursive",
+        "-e", " ".join(ssh_args),
+        package_dir,
+        upload_target,
+    ]
+    run_checked(command)
+
+
 def main():
     repo_dir = os.getcwd()
     config = load_config()
@@ -137,8 +148,11 @@ def main():
         os.chdir(repo_dir)
 
     import pprint
+    print("Built packages:")
     pprint.pprint(sorted(os.listdir(package_dir)))
 
+    upload_packages(package_dir, config["upload_target"], key_file="~/.ssh/id_ed25519")
+
 if __name__ == "__main__":
     main()
 
-- 
GitLab