pipeline { agent { docker { image 'drun.kharlamov.biz/drun/base-python-image:latest' args '-v drun:/drun -u 0:0 --network=drun_drun_root -e "DOCKER_TLS_VERIFY=1" -e "DOCKER_HOST=${DOCKER_HOST}" -e "DOCKER_CERT_PATH=${DOCKER_CERT_PATH}" -e "MODEL_SERVER_URL=${DRUN_MODEL_SERVER_URL}"' } } stages { stage('clone'){ steps { sh ''' pip install -i https://drun.kharlamov.biz/pypi/ drun ''' } } stage('run notebook'){ steps { sh ''' jupyter nbconvert --execute "Digit-Recognition/Recognizing digits.ipynb" cp "Digit-Recognition/Recognizing digits.html" notebook.html mkdir -p release-models cp -rf /drun/* release-models/ ''' } } stage('archive notebook artifacts'){ steps { archiveArtifacts 'release-models/image_recognize.model' archiveArtifacts 'Digit-Recognition/*.html' archiveArtifacts 'notebook.html' } } stage('deploy to legion'){ steps { sh ''' legion build release-models/image_recognize.model legion deploy --model-id recognize_digits ''' sleep time: 20, unit: 'SECONDS' } } stage('run tests'){ steps { sh ''' cd "Digit-Recognition/tests" nosetests --with-xunit ''' junit 'Digit-Recognition/tests/nosetests.xml' } } } }