diff --git a/.gitignore b/.gitignore index 2a51587df7..0642927510 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,4 @@ Cargo.lock .venv .cache .DS_Store -Podfile.lock - +Podfile.lock \ No newline at end of file diff --git a/ci/python.dockerfile b/ci/python.dockerfile new file mode 100644 index 0000000000..0005b6d7ae --- /dev/null +++ b/ci/python.dockerfile @@ -0,0 +1,28 @@ +FROM ubuntu:16.04 + +ARG uid=1000 + +RUN apt-get update && \ + apt-get install -y \ + gdebi \ + apt-utils \ + software-properties-common + +RUN add-apt-repository ppa:jonathonf/python-3.6 + +RUN apt-get update && \ + apt-get install -y \ + python3.6 \ + python3-pip + +ADD https://repo.evernym.com/deb/indy-sdk/0.1.1/indy-sdk_0.1.1_amd64.deb . + +RUN gdebi -n indy-sdk_0.1.1_amd64.deb + +RUN useradd -ms /bin/bash -u $uid indy +USER indy + +WORKDIR /home/indy + + + diff --git a/wrappers/python/.gitignore b/wrappers/python/.gitignore new file mode 100644 index 0000000000..0d20b6487c --- /dev/null +++ b/wrappers/python/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/wrappers/python/Jenkinsfile b/wrappers/python/Jenkinsfile new file mode 100644 index 0000000000..09d86d6579 --- /dev/null +++ b/wrappers/python/Jenkinsfile @@ -0,0 +1,91 @@ +#!groovy​ + +@Library('SovrinHelpers') _ + +name = 'indy-sdk' +def err +def publishBranch = (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'devel') + +try { + +// ALL BRANCHES: master, devel, PRs + + // 1. TEST + stage('Test') { + parallel 'ubuntu-python-test': { + node('ubuntu') { + stage('Ubuntu Python Test') { + pythonTestUbuntu() + } + } + } + } + +} catch (e) { + currentBuild.result = "FAILED" + node('ubuntu-master') { + sendNotification.fail([slack: publishBranch]) + } + err = e +} finally { + if (err) { + throw err + } + currentBuild.result = "SUCCESS" + if (publishBranch) { + node('ubuntu-master') { + sendNotification.success(name) + } + } +} + +def pythonTestUbuntu() { + def poolInst + def network_name = "pool_network" + try { + echo 'Ubuntu Python Test: Checkout csm' + checkout scm + + echo "Ubuntu Python Test: Create docker network (${network_name}) for nodes pool and test image" + sh "docker network create --subnet=10.0.0.0/8 ${network_name}" + + echo 'Ubuntu Python Test: Build docker image for nodes pool' + def poolEnv = dockerHelpers.build('indy_pool', 'ci/indy-pool.dockerfile ci') + echo 'Ubuntu Python Test: Run nodes pool' + poolInst = poolEnv.run("--ip=\"10.0.0.2\" --network=${network_name}") + + echo 'Ubuntu Python Test: Build docker image' + def testEnv = dockerHelpers.build(name, 'ci/python.dockerfile ci') + + testEnv.inside("--ip=\"10.0.0.3\" --network=${network_name}") { + echo 'Ubuntu Python Test: Test' + + sh ''' + cd wrappers/python + python3.6 -m pip install -e . + python3.6 -m pytest + ''' + } + } + finally { + echo "Ubuntu Python Test: Cleanup" + try { + sh "docker network inspect ${network_name}" + } catch (err) { + echo "Ubuntu Python Tests: error while inspect network ${network_name} - ${err}" + } + try { + echo "Ubuntu Python Test: stop pool" + poolInst.stop() + } catch (err) { + echo "Ubuntu Python Tests: error while stop pool ${err}" + } + try { + echo "Ubuntu Python Test: remove pool network ${network_name}" + sh "docker network rm ${network_name}" + } catch (err) { + echo "Ubuntu Python Test: error while delete ${network_name} - ${err}" + } + step([$class: 'WsCleanup']) + } +} \ No newline at end of file diff --git a/wrappers/python/setup.py b/wrappers/python/setup.py index e91cad4532..6cb3df422f 100644 --- a/wrappers/python/setup.py +++ b/wrappers/python/setup.py @@ -9,6 +9,6 @@ author='Vyacheslav Gudkov', author_email='vyacheslav.gudkov@dsr-company.com', description='This is the official SDK for Hyperledger Indy (https://www.hyperledger.org/projects), which provides a distributed-ledger-based foundation for self-sovereign identity (https://sovrin.org). The major artifact of the SDK is a c-callable library.', - install_requires=[], + install_requires=['pytest', 'pytest-asyncio', 'base58'], tests_require=['pytest', 'pytest-asyncio', 'base58'] )