pipeline {
    agent {
    docker{ image 'registry.cn-mirrors.tuna.tsinghua/python-3.7.3:1'}}
    environment {
        CI_PROJECT_DIR = "."
        PIP_CACHE_DIR = "$CI_PROJECT_DIR/.cache/pip"
    }

    stages {
        stage ('validation'){
            steps{
                sh '''
                    pwd
                    echo $PIP_CACHE_DIR
                    echo $HOME
                    which python
                    which pip
                    mkdir -p $HOME/.pip
                    echo "[global]\\nindex-url = https://xyz.example/pypi/simple/\\ndownload-cache = $CI_PROJECT_DIR/.cache/pip/\n" > $HOME/.pip/pip.conf
                    echo '[easy_install]\nindex-url = https://xyz.example/pypi/simple/\n' > $HOME/.pydistutils.cfg
                    export HASH=$(cat ./requirements.txt | md5sum | cut -d ' ' -f1)
                    export VENV_EXIST=0
                    echo ".venv/venv_${HASH}"
                    mkdir -p .venv/venv_${HASH}
                    test -d .venv/venv_${HASH}
                    test ${VENV_EXIST} -eq 0 && pip install virtualenv
                    test ${VENV_EXIST} -eq 0 && virtualenv -p /usr/local/bin/python .venv/venv_${HASH}
                    chmod +x  .venv/venv_${HASH}/bin/activate
                    .  .venv/venv_${HASH}/bin/activate
                    test ${VENV_EXIST} -eq 0 && pip install -r ./requirements.txt
                    mkdir -p logs
                    pylint --load-plugins pylint_django -E --rcfile .pylintrc example
                    flake8  example
                    mypy --config-file .mypy.ini example
                '''
            }
       }
   }
   post {
       always {
            echo 'One way or another, I have finished'
            deleteDir() /* clean up our workspace */
        }
        success {
            echo 'success'
        }
        failure {
            echo 'failure'
        }
}
}