From 3c0683185f6f4db43d83241e1c60df1f7d6a6a72 Mon Sep 17 00:00:00 2001 From: James Turner Date: Mon, 31 Aug 2015 08:39:30 +0100 Subject: [PATCH] Post-upload tweaks to support RC builds. --- post_upload.py | 79 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 29 deletions(-) diff --git a/post_upload.py b/post_upload.py index 73239d2..a88db5a 100644 --- a/post_upload.py +++ b/post_upload.py @@ -6,19 +6,30 @@ from subprocess import call suffix = '.dmg' if sys.argv[1] == 'windows': suffix = '.exe' - +if sys.argv[1] == 'linux': + suffix = '.tar.bz2' + +isReleaseCandidate = False +if len(sys.argv) > 2 and sys.argv[2] == 'release': + isReleaseCandidate = True + allSuffix = '*' + suffix print "Wildcard pattern is:" + allSuffix - -pattern = r'FlightGear-(?P\d+)\.(?P\d+)\.(?P\d+)-([\w-]+)' + suffix -publicNightlyRoot = "/var/www/html/builds/nightly" -incomingDir = "/home/jenkins/nightly-incoming" -sourceForgePath = "/home/frs/project/f/fl/flightgear/unstable/" +pattern = r'\w+-(?P\d+)\.(?P\d+)\.(?P\d+)([\w-]*)' + suffix sourceForgeUserHost = "jmturner@frs.sourceforge.net" sftpCommandFile = "sftp-commands" -os.chdir(publicNightlyRoot) +if isReleaseCandidate: + publicRoot = "/var/www/html/builds/rc" + incomingDir = "/home/jenkins/incoming" + sourceForgePath = "/home/frs/project/f/fl/flightgear/release-candidate/" +else: + publicRoot = "/var/www/html/builds/nightly" + incomingDir = "/home/jenkins/nightly-incoming" + sourceForgePath = "/home/frs/project/f/fl/flightgear/unstable/" + +os.chdir(publicRoot) def findFileVersion(dir): for file in os.listdir(dir): @@ -26,14 +37,14 @@ def findFileVersion(dir): m = re.match(pattern, file) if (m is not None): return (m.group('major'), m.group('minor'), m.group('patch')) - + return None - + incomingVer = findFileVersion(incomingDir) if incomingVer is None: print "No incoming files found matching " + allSuffix exit() - + existingVer = findFileVersion('.') # if files in dest location mis-match the version, archive them @@ -42,11 +53,12 @@ existingVer = findFileVersion('.') versionChange = (existingVer != incomingVer) oldFiles = [] +incomingFiles = [] newFiles = [] if versionChange: print "Version number changing" - + for file in os.listdir('.'): if fnmatch.fnmatch(file, allSuffix): if not os.path.islink(file): @@ -55,22 +67,33 @@ if versionChange: for file in os.listdir(incomingDir): if fnmatch.fnmatch(file, allSuffix): - newFiles.append(file) - + incomingFiles.append(file) + # copy and symlink -for file in newFiles: +for file in incomingFiles: # move it to the public location srcFile = os.path.join(incomingDir, file) - os.rename(srcFile, file) - - # symlink for stable web URL - m = re.match(r'FlightGear-\d+\.\d+\.\d+-([\w-]+)' + suffix, file) - latestName = 'FlightGear-latest-' + m.group(1) + suffix - - if os.path.exists(latestName): - os.remove(latestName) - os.symlink(file, latestName) - + + outFile = file + # insert -rc before suffix + if isReleaseCandidate: + m = re.match(r'(\w+-\d+\.\d+\.\d+[\w-]*)' + suffix, file) + outFile = m.group(1) + '-rc' + suffix + print "RC out name is " + outFile + + os.rename(srcFile, outFile) + newFiles.append(outFile) + + if not isReleaseCandidate: + # symlink for stable web URL + m = re.match(r'(\w+)-\d+\.\d+\.\d+-([\w-]+)' + suffix, file) + latestName = m.group(1) + '-latest-' + m.group(2) + suffix + + if os.path.exists(latestName): + os.remove(latestName) + os.symlink(file, latestName) + + # remove files from SF if len(oldFiles) > 0: f = open(sftpCommandFile, 'w') @@ -80,13 +103,11 @@ if len(oldFiles) > 0: f.write("rm " + file + '\n') f.write("bye\n") f.close() - + call(["sftp", "-b", sftpCommandFile, sourceForgeUserHost]) os.remove(sftpCommandFile) - + # upload to SourceForge -for file in newFiles: +for file in newFiles: print "Uploading " + file + " to SourceForge" call(["scp", file, sourceForgeUserHost + ":" + sourceForgePath + file]) - - \ No newline at end of file