You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2013/04/17 21:35:47 UTC
svn commit: r1469041 - in /lucene/dev/trunk: ./ dev-tools/
dev-tools/scripts/buildAndPushRelease.py
Author: mikemccand
Date: Wed Apr 17 19:35:47 2013
New Revision: 1469041
URL: http://svn.apache.org/r1469041
Log:
prompt for GPG password up front
Modified:
lucene/dev/trunk/ (props changed)
lucene/dev/trunk/dev-tools/ (props changed)
lucene/dev/trunk/dev-tools/scripts/buildAndPushRelease.py
Modified: lucene/dev/trunk/dev-tools/scripts/buildAndPushRelease.py
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/dev-tools/scripts/buildAndPushRelease.py?rev=1469041&r1=1469040&r2=1469041&view=diff
==============================================================================
--- lucene/dev/trunk/dev-tools/scripts/buildAndPushRelease.py (original)
+++ lucene/dev/trunk/dev-tools/scripts/buildAndPushRelease.py Wed Apr 17 19:35:47 2013
@@ -15,9 +15,11 @@
import datetime
import re
+import time
import shutil
import os
import sys
+import subprocess
# Usage: python3.2 -u buildAndPushRelease.py [-sign gpgKey(eg: 6E68DA61)] [-prepare] [-push userName] [-pushLocal dirName] [-smoke tmpDir] /path/to/checkout version(eg: 3.4.0) rcNum(eg: 0)
#
@@ -43,6 +45,25 @@ def run(command):
print(msg)
raise RuntimeError(msg)
+def runAndSendGPGPassword(command, password):
+ p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
+ f = open(LOG, 'ab')
+ while True:
+ line = p.stdout.readline()
+ if len(line) == 0:
+ break
+ f.write(line)
+ if line.find(b'Enter GPG keystore password:') != -1:
+ time.sleep(1.0)
+ p.stdin.write((password + '\n').encode('UTF-8'))
+ p.stdin.write('\n'.encode('UTF-8'))
+
+ result = p.poll()
+ if result != 0:
+ msg = ' FAILED: %s [see log %s]' % (command, LOG)
+ print(msg)
+ raise RuntimeError(msg)
+
def scrubCheckout():
# removes any files not checked into svn
@@ -68,7 +89,7 @@ def getSVNRev():
return rev
-def prepare(root, version, gpgKeyID, doTest):
+def prepare(root, version, gpgKeyID, gpgPassword, doTest):
print()
print('Prepare release...')
if os.path.exists(LOG):
@@ -98,7 +119,11 @@ def prepare(root, version, gpgKeyID, doT
cmd += ' -Dgpg.key=%s prepare-release' % gpgKeyID
else:
cmd += ' prepare-release-no-sign'
- run(cmd)
+
+ if gpgPassword is not None:
+ runAndSendGPGPassword(cmd, gpgPassword)
+ else:
+ run(cmd)
print(' solr prepare-release')
os.chdir('../solr')
@@ -107,7 +132,12 @@ def prepare(root, version, gpgKeyID, doT
cmd += ' -Dgpg.key=%s prepare-release' % gpgKeyID
else:
cmd += ' prepare-release-no-sign'
- run(cmd)
+
+ if gpgPassword is not None:
+ runAndSendGPGPassword(cmd, gpgPassword)
+ else:
+ run(cmd)
+
print(' done!')
print()
return rev
@@ -253,12 +283,16 @@ def main():
gpgKeyID = sys.argv[idx+1]
del sys.argv[idx:idx+2]
+ sys.stdout.flush()
+ import getpass
+ gpgPassword = getpass.getpass('Enter GPG keystore password: ')
+
root = os.path.abspath(sys.argv[1])
version = sys.argv[2]
rcNum = int(sys.argv[3])
if doPrepare:
- rev = prepare(root, version, gpgKeyID, smokeTmpDir is None)
+ rev = prepare(root, version, gpgKeyID, gpgPassword, smokeTmpDir is None)
else:
os.chdir(root)
rev = open('rev.txt', encoding='UTF-8').read()