#!/usr/bin/env groovy pipeline { agent any options { disableConcurrentBuilds() timestamps() buildDiscarder(logRotator(numToKeepStr: '30')) } environment { PYENVPIPELINE_VIRTUALENV = '1' PIP_DISABLE_PIP_VERSION_CHECK = '1' PYTHONUNBUFFERED = '1' } stages { stage('Runtime') { steps { sh ''' python3 --version python3 -m venv .venv . .venv/bin/activate python -m pip install -U "pip<24.1" "setuptools<81" wheel ''' } } stage('Resolve Dependencies') { steps { sh ''' . .venv/bin/activate pip install coverage make EXTRAS="" install cp "${JOB_BASE_NAME}/ocyan.json" "${JOB_BASE_NAME}/${JOB_BASE_NAME}.json" pip install ruff pylint pylint-django vdt.versionplugin.wheel make migrate loaddata collectstatic pip install "httpx<0.28" ''' } } stage('Lint') { steps { sh ''' . .venv/bin/activate make lint ''' } } stage('Test') { steps { sh ''' . .venv/bin/activate make test ''' } post { always { junit allowEmptyResults: true, testResults: '**/nosetests.xml' } } } } post { success { build job: 'deploy-project-stg', parameters: [string(name: 'PROJECT_NAME', value: env.JOB_BASE_NAME)], wait: false, propagate: false } failure { emailext subject: "JENKINS-NOTIFICATION: ${currentBuild.currentResult}: Job '${env.JOB_NAME} #${env.BUILD_NUMBER}'", body: '${SCRIPT, template="groovy-text.template"}', recipientProviders: [culprits(), brokenBuildSuspects(), brokenTestsSuspects()] } } }