add artifact builder for python
diff --git a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
index de40247..80c719d 100644
--- a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
@@ -58,6 +58,20 @@
   wget \
   zip && apt-get clean
 
+
+##################
+# Python dependencies
+
+RUN apt-get update && apt-get install -y \
+    python-all-dev \
+    python3-all-dev \
+    python-pip
+
+RUN pip install pip --upgrade
+RUN pip install virtualenv
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2 tox
+
+
 RUN mkdir /var/local/jenkins
 
 # Define the default command.
diff --git a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
index 774b452..e033a81 100644
--- a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
@@ -58,6 +58,20 @@
   wget \
   zip && apt-get clean
 
+
+##################
+# Python dependencies
+
+RUN apt-get update && apt-get install -y \
+    python-all-dev \
+    python3-all-dev \
+    python-pip
+
+# Install Python packages from PyPI
+RUN pip install pip --upgrade
+RUN pip install virtualenv
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2 tox
+
 RUN mkdir /var/local/jenkins
 
 # Define the default command.
diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index a34fa8e..32a98c9 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -80,6 +80,34 @@
   return {'CFLAGS': arch_arg, 'LDFLAGS': arch_arg}
 
 
+class PythonArtifact:
+  """Builds Python artifacts."""
+
+  def __init__(self, platform, arch):
+    self.name = 'python_%s_%s' % (platform, arch)
+    self.platform = platform
+    self.arch = arch
+    self.labels = ['artifact', 'python', platform, arch]
+
+  def pre_build_jobspecs(self):
+      return []
+
+  def build_jobspec(self):
+    if self.platform == 'windows':
+      raise Exception('Not supported yet.')
+    else:
+      if self.platform == 'linux':
+        return create_docker_jobspec(self.name,
+            'tools/dockerfile/grpc_artifact_linux_%s' % self.arch,
+            'tools/run_tests/build_artifact_python.sh')
+      else:
+        return create_jobspec(self.name,
+                              ['tools/run_tests/build_artifact_python.sh'])
+
+  def __str__(self):
+    return self.name
+
+
 class CSharpExtArtifact:
   """Builds C# native extension library"""
 
@@ -134,4 +162,6 @@
           CSharpExtArtifact('macos', 'x86'),
           CSharpExtArtifact('macos', 'x64'),
           CSharpExtArtifact('windows', 'x86'),
-          CSharpExtArtifact('windows', 'x64')]
+          CSharpExtArtifact('windows', 'x64'),
+          PythonArtifact('linux', 'x86'),
+          PythonArtifact('linux', 'x64')]
diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
new file mode 100755
index 0000000..0ff6b2f
--- /dev/null
+++ b/tools/run_tests/build_artifact_python.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+cd $(dirname $0)/../..
+
+pip install --upgrade six
+pip install --upgrade setuptools
+
+pip install -rrequirements.txt
+
+GRPC_PYTHON_BUILD_WITH_CYTHON=1 python setup.py \
+    bdist_wheel \
+    sdist \
+    bdist_egg_grpc_custom
+
+mkdir -p artifacts
+
+cp -r dist/* artifacts
\ No newline at end of file