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:33:48 UTC

svn commit: r1469040 - /lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py

Author: mikemccand
Date: Wed Apr 17 19:33:48 2013
New Revision: 1469040

URL: http://svn.apache.org/r1469040
Log:
prompt for GPG password up front

Modified:
    lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py

Modified: lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py?rev=1469040&r1=1469039&r2=1469040&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py (original)
+++ lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py Wed Apr 17 19:33:48 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()



Re: svn commit: r1469040 - /lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py

Posted by Simon Willnauer <si...@gmail.com>.
WOOT


On Wed, Apr 17, 2013 at 9:33 PM, <mi...@apache.org> wrote:

> Author: mikemccand
> Date: Wed Apr 17 19:33:48 2013
> New Revision: 1469040
>
> URL: http://svn.apache.org/r1469040
> Log:
> prompt for GPG password up front
>
> Modified:
>     lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py
>
> Modified:
> lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py
> URL:
> http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py?rev=1469040&r1=1469039&r2=1469040&view=diff
>
> ==============================================================================
> --- lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py
> (original)
> +++ lucene/dev/branches/branch_4x/dev-tools/scripts/buildAndPushRelease.py
> Wed Apr 17 19:33:48 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()
>
>
>