Merge "Add support for installing python with pyenv"
This commit is contained in:
commit
1e4e4bd91e
@ -8,3 +8,9 @@ Ensure specified python interpreter and development files are installed
|
|||||||
.. zuul:rolevar:: python_version
|
.. zuul:rolevar:: python_version
|
||||||
|
|
||||||
Optional version of python interpreter to install, such as ``3.7``.
|
Optional version of python interpreter to install, such as ``3.7``.
|
||||||
|
|
||||||
|
.. zuul:rolevar:: python_use_pyenv
|
||||||
|
:default: false
|
||||||
|
|
||||||
|
Whether to optionally use pyenv to install python instead of distro
|
||||||
|
packages.
|
||||||
|
1
roles/ensure-python/defaults/main.yaml
Normal file
1
roles/ensure-python/defaults/main.yaml
Normal file
@ -0,0 +1 @@
|
|||||||
|
python_use_pyenv: false
|
@ -1,8 +1,23 @@
|
|||||||
|
- name: Validate python_version value
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- (python_version|string).split(".") | length == 2
|
||||||
|
- (python_version|string).split(".")[0]
|
||||||
|
- (python_version|string).split(".")[1]
|
||||||
|
when: python_version is defined
|
||||||
|
|
||||||
- name: Install specified version of python interpreter and development files
|
- name: Install specified version of python interpreter and development files
|
||||||
when:
|
when:
|
||||||
- python_version is defined
|
- python_version is defined
|
||||||
- ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
|
- ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
|
||||||
|
- not python_use_pyenv
|
||||||
package:
|
package:
|
||||||
name: python{{ python_version }}-dev
|
name: python{{ python_version }}-dev
|
||||||
state: present
|
state: present
|
||||||
become: yes
|
become: yes
|
||||||
|
|
||||||
|
- name: Install python using pyenv
|
||||||
|
when:
|
||||||
|
- python_version is defined
|
||||||
|
- python_use_pyenv
|
||||||
|
include_tasks: pyenv.yaml
|
||||||
|
38
roles/ensure-python/tasks/pyenv.yaml
Normal file
38
roles/ensure-python/tasks/pyenv.yaml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
- name: Include OS-specific variables
|
||||||
|
include_vars: "{{ item }}"
|
||||||
|
with_first_found:
|
||||||
|
- "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yaml"
|
||||||
|
- "{{ ansible_distribution }}.{{ ansible_architecture }}.yaml"
|
||||||
|
- "{{ ansible_distribution }}.yaml"
|
||||||
|
- "{{ ansible_os_family }}.yaml"
|
||||||
|
|
||||||
|
- name: Install python build depends
|
||||||
|
become: true
|
||||||
|
package:
|
||||||
|
name: "{{ python_build_depends }}"
|
||||||
|
|
||||||
|
- name: Clone pyenv repo
|
||||||
|
git:
|
||||||
|
repo: https://github.com/pyenv/pyenv.git
|
||||||
|
dest: "{{ ansible_user_dir }}/.pyenv"
|
||||||
|
version: master
|
||||||
|
|
||||||
|
# NOTE(mnaser): pyenv does not allow us to let it install Python from a specific
|
||||||
|
# series so we have to do some magic to find out what's the latest
|
||||||
|
# release from a series
|
||||||
|
- name: Determine Python version
|
||||||
|
shell: |
|
||||||
|
set -o pipefail
|
||||||
|
{{ ansible_user_dir }}/.pyenv/plugins/python-build/bin/python-build --definitions | grep ^{{ python_version }} | tail -1
|
||||||
|
args:
|
||||||
|
executable: /bin/bash
|
||||||
|
register: _python_version
|
||||||
|
|
||||||
|
# NOTE(mnaser): We install Python globally in the system, as that's somewhat
|
||||||
|
# similar to behaviour of installing a Python package. It also
|
||||||
|
# avoids us having to mess around $PATH.
|
||||||
|
- name: Install python
|
||||||
|
become: true
|
||||||
|
command: "{{ ansible_user_dir }}/.pyenv/plugins/python-build/bin/python-build {{ _python_version.stdout }} /usr/local"
|
||||||
|
environment:
|
||||||
|
CFLAGS: -O2
|
9
roles/ensure-python/vars/Debian.yaml
Normal file
9
roles/ensure-python/vars/Debian.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
python_build_depends:
|
||||||
|
- aria2
|
||||||
|
- gcc
|
||||||
|
- libbz2-dev
|
||||||
|
- libreadline-dev
|
||||||
|
- libssl-dev
|
||||||
|
- libsqlite3-dev
|
||||||
|
- make
|
||||||
|
- zlib1g-dev
|
1
roles/ensure-python/vars/Gentoo.yaml
Normal file
1
roles/ensure-python/vars/Gentoo.yaml
Normal file
@ -0,0 +1 @@
|
|||||||
|
python_build_depends: []
|
8
roles/ensure-python/vars/RedHat.yaml
Normal file
8
roles/ensure-python/vars/RedHat.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
python_build_depends:
|
||||||
|
- bzip2-devel
|
||||||
|
- gcc
|
||||||
|
- make
|
||||||
|
- openssl-devel
|
||||||
|
- readline-devel
|
||||||
|
- sqlite-devel
|
||||||
|
- zlib-devel
|
10
roles/ensure-python/vars/Suse.yaml
Normal file
10
roles/ensure-python/vars/Suse.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
python_build_depends:
|
||||||
|
- aria2
|
||||||
|
- gcc
|
||||||
|
- libbz2-devel
|
||||||
|
- make
|
||||||
|
- openssl-devel
|
||||||
|
- readline-devel
|
||||||
|
- sqlite3-devel
|
||||||
|
- tar
|
||||||
|
- zlib-devel
|
13
test-playbooks/ensure-python-pyenv.yaml
Normal file
13
test-playbooks/ensure-python-pyenv.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: Include ensure-python role
|
||||||
|
include_role:
|
||||||
|
name: ensure-python
|
||||||
|
vars:
|
||||||
|
python_use_pyenv: true
|
||||||
|
python_version: 3.8
|
||||||
|
|
||||||
|
- name: Check installed version of Python
|
||||||
|
command: /usr/local/bin/python3 --version
|
||||||
|
register: _check_version
|
||||||
|
failed_when: "'Python 3.8' not in _check_version.stdout"
|
121
zuul-tests.d/python-roles-jobs.yaml
Normal file
121
zuul-tests.d/python-roles-jobs.yaml
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
description: Test the ensure-python role with pyenv
|
||||||
|
files:
|
||||||
|
- zuul-tests.d/python-roles-jobs.yaml
|
||||||
|
run: test-playbooks/ensure-python-pyenv.yaml
|
||||||
|
tags: all-platforms
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-centos-7
|
||||||
|
description: Test the ensure-python role with pyenv on centos-7
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: centos-7
|
||||||
|
label: centos-7
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-centos-8
|
||||||
|
description: Test the ensure-python role with pyenv on centos-8
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: centos-8
|
||||||
|
label: centos-8
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-debian-stretch
|
||||||
|
description: Test the ensure-python role with pyenv on debian-stretch
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: debian-stretch
|
||||||
|
label: debian-stretch
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-fedora-30
|
||||||
|
description: Test the ensure-python role with pyenv on fedora-30
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: fedora-30
|
||||||
|
label: fedora-30
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-gentoo-17-0-systemd
|
||||||
|
description: Test the ensure-python role with pyenv on gentoo-17-0-systemd
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: gentoo-17-0-systemd
|
||||||
|
label: gentoo-17-0-systemd
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-opensuse-15
|
||||||
|
description: Test the ensure-python role with pyenv on opensuse-15
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: opensuse-15
|
||||||
|
label: opensuse-15
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-opensuse-tumbleweed-nv
|
||||||
|
voting: false
|
||||||
|
description: Test the ensure-python role with pyenv on opensuse-tumbleweed
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: opensuse-tumbleweed
|
||||||
|
label: opensuse-tumbleweed
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-ubuntu-bionic
|
||||||
|
description: Test the ensure-python role with pyenv on ubuntu-bionic
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: ubuntu-bionic
|
||||||
|
label: ubuntu-bionic
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-python-pyenv-ubuntu-xenial
|
||||||
|
description: Test the ensure-python role with pyenv on ubuntu-xenial
|
||||||
|
parent: zuul-jobs-test-ensure-python-pyenv
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: ubuntu-xenial
|
||||||
|
label: ubuntu-xenial
|
||||||
|
|
||||||
|
- project:
|
||||||
|
check:
|
||||||
|
jobs:
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-centos-7
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-centos-8
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-debian-stretch
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-fedora-30
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-gentoo-17-0-systemd
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-opensuse-15
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-opensuse-tumbleweed-nv
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-ubuntu-bionic
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-ubuntu-xenial
|
||||||
|
gate:
|
||||||
|
jobs:
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-centos-7
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-centos-8
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-debian-stretch
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-fedora-30
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-gentoo-17-0-systemd
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-opensuse-15
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-ubuntu-bionic
|
||||||
|
- zuul-jobs-test-ensure-python-pyenv-ubuntu-xenial
|
Loading…
x
Reference in New Issue
Block a user