Update Invoke Tasks and use Twine for upload 85/37185/1
authorTrevor Bramwell <tbramwell@linuxfoundation.org>
Tue, 11 Jul 2017 06:38:36 +0000 (23:38 -0700)
committerTrevor Bramwell <tbramwell@linuxfoundation.org>
Tue, 11 Jul 2017 15:25:07 +0000 (08:25 -0700)
None of the tasks generated by the boilerplate included the 'context'
argument required by the newest version of invoke.

The 'invoke publish' task has been updated to use 'twine upload' instead
of the less-secure 'python setup.py register/upload', and comments have
been added to clarify possible steps needed to publish anteater.

A 'invoke build' command has been added to build a source distribution
and binary wheel distribution.

JIRA: RELENG-237

Change-Id: I9ae705332b592ef8880d52b7d20624180e23677a
Signed-off-by: Trevor Bramwell <tbramwell@linuxfoundation.org>
requirements.txt
tasks.py

index 7a52654..201b07f 100644 (file)
@@ -2,8 +2,10 @@ appdirs==1.4.3
 binaryornot==0.4.3
 chardet==3.0.2
 docopt==0.6.2
+invoke==0.18.0
 packaging==16.8
 pyaml==16.12.2
 pyparsing==2.2.0
 PyYAML==3.12
 six==1.10.0
+twine==1.9.1
index 55ac340..30bef4c 100644 (file)
--- a/tasks.py
+++ b/tasks.py
@@ -11,47 +11,64 @@ build_dir = os.path.join(docs_dir, '_build')
 
 
 @task
-def test():
+def test(ctx):
     run('python setup.py test', pty=True)
 
 
 @task
-def clean():
-    run("rm -rf build")
-    run("rm -rf dist")
-    run("rm -rf anteater.egg-info")
-    clean_docs()
+def clean(ctx):
+    ctx.run("rm -rf build")
+    ctx.run("rm -rf dist")
+    ctx.run("rm -rf anteater.egg-info")
+    clean_docs(ctx)
     print("Cleaned up.")
 
 
 @task
-def clean_docs():
-    run("rm -rf %s" % build_dir)
+def clean_docs(ctx):
+    ctx.run("rm -rf %s" % build_dir)
 
 
 @task
-def browse_docs():
-    run("open %s" % os.path.join(build_dir, 'index.html'))
+def browse_docs(ctx):
+    ctx.run("open %s" % os.path.join(build_dir, 'index.html'))
 
 
 @task
-def build_docs(clean=False, browse=False):
+def build_docs(ctx, clean=False, browse=False):
     if clean:
         clean_docs()
-    run("sphinx-build %s %s" % (docs_dir, build_dir), pty=True)
+    ctx.run("sphinx-build %s %s" % (docs_dir, build_dir), pty=True)
     if browse:
         browse_docs()
 
 
 @task
-def readme(browse=False):
-    run('rst2html.py README.rst > README.html')
+def readme(ctx, browse=False):
+    ctx.run('rst2html.py README.rst > README.html')
 
 
 @task
-def publish(test=False):
-    """Publish to the cheeseshop."""
+def build(ctx):
+    """Build source distribution and wheels."""
+    ctx.run('python setup.py sdist bdist_wheel')
+
+
+@task
+def publish(ctx, test=False):
+    """Publish to the cheeseshop.
+
+    This command follows the Python packaging guidelines:
+    https://packaging.python.org/tutorials/distributing-packages
+
+    Information on configuration required for '--test' can be found
+    here: https://wiki.python.org/moin/TestPyPI
+
+    Before uploading please ensure you've signed the release using:
+
+      gpg --detach-sign -a dist/package-1.0.1.tar.gz
+    """
     if test:
-        run('python setup.py register -r test sdist upload -r test')
+        ctx.run('twine upload -r test dist/*')
     else:
-        run("python setup.py register sdist upload")
+        ctx.run("twine upload dist/*")