To select a Python version in the pipeline, you need to have the required versions installed on the system.
Further actions were performed on CentOS 7 and the installation of binaries took place in the "/usr/bin/" directory for convenience, since the system already has versions "2.7" and "3.6" installed from the repository along this path.
Install dependencies:
yum install gcc openssl-devel bzip2-devel libffi-devel wget
Download the necessary sources of the necessary versions, in this case: "3.7", "3.8" and "3.9"
cd /usr/src wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz wget https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tgz wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
Unzip:
tar xzf Python-3.7.9.tgz tar xzf Python-3.8.9.tgz tar xzf Python-3.9.5.tgz
Install:
cd Python-3.7.9 ./configure --enable-optimizations --prefix=/usr make altinstall cd ../Python-3.8.9 ./configure --enable-optimizations --prefix=/usr make altinstall cd ../Python-3.9.5 ./configure --enable-optimizations --prefix=/usr make altinstall
Now let’s install the plugin Pyenv Pipeline
Go to Jenkins settings
Section "Manage Plugins"
Go to the "Available" tab and in the search we specify "Pyenv Pipeline"
And install it.
To select the version, we will use the "choice" parameter
Pipeline:
properties([ parameters([ choice( name: 'PYTHON', description: 'Choose Python version', choices: ["python2.7", "python3.6", "python3.7", "python3.8", "python3.9"].join("\n") ), base64File( name: 'REQUIREMENTS_FILE', description: 'Upload requirements file (Optional)' ) ]) ]) pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: '5')) timeout(time: 60, unit:'MINUTES') timestamps() } stages { stage("Python"){ steps{ withPythonEnv("/usr/bin/${params.PYTHON}") { script { if ( env.REQUIREMENTS_FILE.isEmpty() ) { sh "python --version" sh "pip --version" sh "echo Requirements file not set. Run Python without requirements file." } else { sh "python --version" sh "pip --version" sh "echo Requirements file found. Run PIP install using requirements file." withFileParameter('REQUIREMENTS_FILE') { sh 'cat $REQUIREMENTS_FILE > requirements.txt' } sh "pip install -r requirements.txt" } } } } } } }
Let’s start the build:
Select the desired version, for example, "3.9" and run the build:
Let’s check the build log: