Merge "Rename install-if-python to ensure-if-python for consistency"

This commit is contained in:
Zuul 2020-04-06 18:02:36 +00:00 committed by Gerrit Code Review
commit 483ea85f63
8 changed files with 110 additions and 105 deletions

View File

@ -4,6 +4,7 @@ Python Roles
.. zuul:autorole:: build-python-release
.. zuul:autorole:: build-releasenotes
.. zuul:autorole:: ensure-babel
.. zuul:autorole:: ensure-if-python
.. zuul:autorole:: ensure-python
.. zuul:autorole:: ensure-sphinx
.. zuul:autorole:: ensure-tox

View File

@ -1,6 +1,6 @@
- hosts: all
roles:
- role: install-if-python
- role: ensure-if-python
# Releasenotes do not need the package itself to be installed
install_package: false
- build-releasenotes

View File

@ -1,4 +1,4 @@
- hosts: all
roles:
- install-if-python
- ensure-if-python
- sphinx

View File

@ -0,0 +1,30 @@
Install the contents of a directory if they contain a python project.
Installs into a virtualenv.
**Role Variables**
.. zuul:rolevar:: install_package
:default: true
Flag indicating whether or not the software in the ``zuul_work_dir`` should
be installed.
.. zuul:rolevar:: error_on_failure
Flag that indicates installation errors should result in failure. Failures
in installing the target directory are ignored by default.
.. zuul:rolevar:: constraints_file
Optional path to a pip constraints file to use when installing.
.. zuul:rolevar:: zuul_work_virtualenv
:default: ~/.venv
Virtualenv location in which to install things.
.. zuul:rolevar:: zuul_work_dir
:default: {{ zuul.project.src_dir }}
Directory to operate in.

View File

@ -0,0 +1,74 @@
# TODO(mordred) rework tox-siblings so it can be used here - probably by
# making it take a parameter as to what path to python/pip to use.
- name: Find Constraints File
include_role:
name: find-constraints
- name: Check to see if the project is a python project
find:
paths: "{{ zuul_work_dir }}"
patterns:
- setup.cfg
- setup.py
register: found_python_files
when: install_package
# Installing the directory with the constraints flag can hit into problems
# with conflicting values between constraints and current project. So look
# for a requirements.txt file so we can install it directly.
- name: Check to see if the project has a requirements.txt file
stat:
get_checksum: false
get_mime: false
get_md5: false
path: "{{ zuul_work_dir }}/requirements.txt"
register: requirements_file
- name: Install requirements if they exist
pip:
chdir: "{{ zuul_work_dir }}"
virtualenv: "{{ zuul_work_virtualenv }}"
requirements: requirements.txt
extra_args: "{{ upper_constraints|default(omit) }}"
register: requirements_install
when:
- install_package
- found_python_files.matched
- requirements_file.stat.exists
failed_when:
- error_on_failure is defined
- error_on_failure
- requirements_install is failed
# Build an sdist. This is needed for pbr projects that may expect
# the ChangeLog to have been generated.
- name: Make sdist to generate ChangeLog
command:
cmd: "{{ zuul_work_virtualenv }}/bin/python setup.py sdist"
chdir: "{{ zuul_work_dir }}"
when:
- install_package
- found_python_files.matched
register: sdist_results
failed_when:
- error_on_failure is defined
- error_on_failure
- sdist_results is failed
# Try installing current repo in case it needs to be available for
# example for version number calculation. Ignore any failures here.
- name: Install the project if it is a Python project
pip:
chdir: "{{ zuul_work_dir }}"
virtualenv: "{{ zuul_work_virtualenv }}"
name: .
extra_args: --no-deps
when:
- install_package
- found_python_files.matched
register: install_package_results
failed_when:
- error_on_failure is defined
- error_on_failure
- install_package_results is failed

View File

@ -1,30 +1 @@
Install the contents of a directory if they contain a python project.
Installs into a virtualenv.
**Role Variables**
.. zuul:rolevar:: install_package
:default: true
Flag indicating whether or not the software in the ``zuul_work_dir`` should
be installed.
.. zuul:rolevar:: error_on_failure
Flag that indicates installation errors should result in failure. Failures
in installing the target directory are ignored by default.
.. zuul:rolevar:: constraints_file
Optional path to a pip constraints file to use when installing.
.. zuul:rolevar:: zuul_work_virtualenv
:default: ~/.venv
Virtualenv location in which to install things.
.. zuul:rolevar:: zuul_work_dir
:default: {{ zuul.project.src_dir }}
Directory to operate in.
.. warning:: Deprecated, use ensure-if-python instead.

View File

@ -1,74 +1,3 @@
# TODO(mordred) rework tox-siblings so it can be used here - probably by
# making it take a parameter as to what path to python/pip to use.
- name: Find Constraints File
- name: Include ensure-if-python.
include_role:
name: find-constraints
- name: Check to see if the project is a python project
find:
paths: "{{ zuul_work_dir }}"
patterns:
- setup.cfg
- setup.py
register: found_python_files
when: install_package
# Installing the directory with the constraints flag can hit into problems
# with conflicting values between constraints and current project. So look
# for a requirements.txt file so we can install it directly.
- name: Check to see if the project has a requirements.txt file
stat:
get_checksum: false
get_mime: false
get_md5: false
path: "{{ zuul_work_dir }}/requirements.txt"
register: requirements_file
- name: Install requirements if they exist
pip:
chdir: "{{ zuul_work_dir }}"
virtualenv: "{{ zuul_work_virtualenv }}"
requirements: requirements.txt
extra_args: "{{ upper_constraints|default(omit) }}"
register: requirements_install
when:
- install_package
- found_python_files.matched
- requirements_file.stat.exists
failed_when:
- error_on_failure is defined
- error_on_failure
- requirements_install is failed
# Build an sdist. This is needed for pbr projects that may expect
# the ChangeLog to have been generated.
- name: Make sdist to generate ChangeLog
command:
cmd: "{{ zuul_work_virtualenv }}/bin/python setup.py sdist"
chdir: "{{ zuul_work_dir }}"
when:
- install_package
- found_python_files.matched
register: sdist_results
failed_when:
- error_on_failure is defined
- error_on_failure
- sdist_results is failed
# Try installing current repo in case it needs to be available for
# example for version number calculation. Ignore any failures here.
- name: Install the project if it is a Python project
pip:
chdir: "{{ zuul_work_dir }}"
virtualenv: "{{ zuul_work_virtualenv }}"
name: .
extra_args: --no-deps
when:
- install_package
- found_python_files.matched
register: install_package_results
failed_when:
- error_on_failure is defined
- error_on_failure
- install_package_results is failed
name: ensure-if-python