Skip to content
Snippets Groups Projects
Commit 39b78cc0 authored by cramakri's avatar cramakri
Browse files

SWE-21 SP-638 : Script to get current installer from hudson

SVN: 29155
parent fb30b4bf
No related branches found
No related tags found
No related merge requests found
#!/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()
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