pipeline { agent { dockerfile { args "-u root -v $HOME/.cache/pipenv:/root/.cache/pipenv" } } environment { SPHINXOPTS = '-w sphinx-build.log' DEPLOY_HOST = 'docs@172.17.0.1' DEPLOY_PATH = 'www/docs/bot-base/' } stages { stage('Install Dependencies') { steps { sh 'pipenv sync --sequential --dev' } } stage('Run Tests') { steps { sh '''export PYTHONPATH=$(pwd)/python cd src pipenv run pytest -p no:warnings --junit-xml test-reports/results.xml''' } post { always { junit 'src/test-reports/results.xml' } } } stage('Build Documentation') { steps { sh '''export PYTHONPATH=$(pwd)/python cd doc rm -f sphinx-build.log pipenv run make html''' } post { failure { sh 'cat doc/sphinx-build.log' } } } stage('Deploy Documentation') { steps { sshagent(credentials: ['1cf72f47-b70c-4f90-a958-020956099d19']) { sh '''cd doc rm -f rsync.log ssh -o StrictHostKeyChecking=no -o BatchMode=yes ${DEPLOY_HOST} mkdir -p ${DEPLOY_PATH}${GIT_BRANCH#*/}/ rsync -aze 'ssh -o StrictHostKeyChecking=no -o BatchMode=yes' \ --log-file=rsync.log \ --delete \ ./build/html/ ${DEPLOY_HOST}:${DEPLOY_PATH}${GIT_BRANCH#*/}/''' } } post { failure { sh 'cat doc/rsync.log' } } } } }