diff --git a/openbis_all/source/python/download_installer.py b/openbis_all/source/python/download_installer.py new file mode 100755 index 0000000000000000000000000000000000000000..e5cc1f8948128dae7c14a6c6ef20baf91c9114e9 --- /dev/null +++ b/openbis_all/source/python/download_installer.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python + +"""Download the latest installer from the ci server + +This script is used in the stage environment to retrieve the current installer. + +""" + +import subprocess +import json +import os.path +import glob + +build_server = "ci" +dest_dir = os.path.expanduser("~") +server_url = 'http://localhost:8090' + +def run_cmd(cmd): + print(" ".join(cmd)) + print("\n") + return subprocess.check_output(cmd) + +def get_files_ssh(proj_name, extension): + # configuration -- server name and location of artifacts + artifacts_folder = "hudson/jobs" + + last_build_folder = "%(artifacts_folder)s/%(proj_name)s/lastSuccessful/archive/_main/targets/dist" % vars() + list_cmd = "ls -1 %s | sort | tail -1" % last_build_folder + server = build_server + last_build_cmd = "ssh -T %(server)s '%(list_cmd)s'" % vars() + last_build = run_cmd(last_build_cmd) + msg = "Fetching artificts for %s : %s\n" % (proj_name, last_build) + print(msg) + + output_dir = dest_dir + retrieve_files_cmd = "scp %(server)s:%(last_build_folder)s/*.%(extension)s %(output_dir)s/" % vars() + run_cmd(retrieve_files_cmd) + +def get_artifacts_list(proj_name): + build_info_cmd = ["ssh", "-T", build_server, "curl", "-s", "%s/job/%s/lastSuccessfulBuild/api/json" % (server_url, proj_name)] + json_string = run_cmd(build_info_cmd) + build_info = json.loads(json_string) + artifacts = build_info["artifacts"] + return artifacts + +def get_artifact(proj_name, artifact): + # Could use curl to retrieve the artifact, but this is complicated. Easier to just use scp... + # curl_cmd = ["ssh", "-T", build_server, "curl", "-s" "%s/job/%s/lastSuccessfulBuild/artifact/%s" % (server_url, proj_name, artifact["relativePath"])] + # print("Getting artifact: " + artifact["fileName"]) + + artifacts_folder = "hudson/jobs" + server_file = "%s:%s/%s/lastSuccessful/archive/%s" % (build_server, artifacts_folder, proj_name, artifact["relativePath"]) + local_file = dest_dir + dl_cmd = ["scp", server_file, dest_dir] + run_cmd(dl_cmd) + +def get_files_rest(proj_name, extension): + artifacts = get_artifacts_list(proj_name) + artifact_to_get = None + for artifact in artifacts: + if artifact["fileName"].endswith(extension): + artifact_to_get = artifact + break + if artifact_to_get is None: + return + get_artifact(proj_name, artifact_to_get) + +def get_files(proj_name, extension): + get_files_rest(proj_name, extension) + +def clean_installer_dir(): + files_to_delete = glob.glob(os.path.join(dest_dir, "openBIS-installation-standard-technologies-*-*.tar.gz")) + if len(files_to_delete) < 1: + return + print("Removing old installers : " + ",".join(files_to_delete)) + for file_to_delete in files_to_delete: + os.remove(file_to_delete) + +def get_files_from_server(): + get_files("installation", "tar.gz") + + +# # # # # # # # # # # # # # # # # # # # # # # # # +# The Script +clean_installer_dir() +get_files_from_server()