Files
mandelstudio/Jenkinsfile

81 lines
2.2 KiB
Groovy

#!/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()]
}
}
}