diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..42acd50 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.8 + +RUN apt-get update && apt-get install -y\ + rsync \ + openssh-client + +RUN pip install pipenv + +CMD ["/bin/bash"] diff --git a/Jenkinsfile b/Jenkinsfile index 3dba59f..ca6398e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,16 +1,27 @@ pipeline { - agent none + agent { + dockerfile { + args '-u root -v $HOME/docker_volumes/.cache/:/root/.cache/' + } + } + environment { + SPHINXOPTS = '-w sphinx-build.log' + DEPLOY_HOST = 'docs@172.17.0.1' + DEPLOY_PATH = 'www/docs/bot-base/' + } + stages { - stage('Test') { - agent { - docker { - image 'python:3.8' - } - } + stage('Install Dependencies') { steps { - sh "pip install --no-cache-dir -t python pipenv" - sh "PYTHONPATH=\$(pwd)/python PIPENV_VENV_IN_PROJECT=true python/bin/pipenv sync --sequential --dev" - sh "export PYTHONPATH=\$(pwd)/python && cd src && PIPENV_VENV_IN_PROJECT=true \${PYTHONPATH}/bin/pipenv run pytest -p no:warnings --junit-xml test-reports/results.xml" + sh 'pipenv sync --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 { @@ -18,5 +29,57 @@ pipeline { } } } + + 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') { + when { + anyOf { + branch 'stable' + branch 'master' + buildingTag() + } + } + steps { + script { + echo "Hello world" + def SUB_PATH = """${sh( + returnStdout: true, + script: 'echo "${GIT_BRANCH#*/}"' + )}""".trim() + if (buildingTag()) { + SUB_PATH="${env.TAG_NAME}" + } + } + sshagent(credentials: ['1cf72f47-b70c-4f90-a958-020956099d19']) { + withEnv(["SUB_PATH=${SUB_PATH}"]) { + sh '''cd doc + rm -f rsync.log + ssh -o StrictHostKeyChecking=no -o BatchMode=yes ${DEPLOY_HOST} mkdir -p ${DEPLOY_PATH}${SUB_PATH}/ + rsync -aze 'ssh -o StrictHostKeyChecking=no -o BatchMode=yes' \ + --log-file=rsync.log \ + --delete \ + ./build/html/ ${DEPLOY_HOST}:${DEPLOY_PATH}${SUB_PATH}/''' + } + } + } + post { + failure { + sh 'cat doc/rsync.log' + } + } + } } }