Ansible role that builds a repository of Git repositories, Python wheels, and virtualenvs.
To clone or view the source code for this repository, visit the role repository for repo_build.
# Additional options passed to pip during package installation.
# A common use is with the '--cert' argument for internally signed
# SSL certificates.
pip_install_options: ""
# Set the package install state for distribution and pip packages
# Options are 'present' and 'latest'
repo_build_package_state: "latest"
repo_build_pip_package_state: "latest"
# Use OpenStack's upper-constraints
repo_build_use_upper_constraints: true
# A list of overrides to apply to OpenStack's upper constraints
# Use these with caution as you're implementing a change to the
# package set which OpenStack has tested its releases with!
repo_build_upper_constraints_overrides: []
repo_build_service_user_name: "nginx"
repo_build_service_group_name: "www-data"
repo_build_base_path: "/var/www/repo"
# NOTE(hwoarang): ansible_distribution may return a string with spaces
# such as "openSUSE Leap" so we need to replace the space with underscore
# in order to create a more sensible repo name for the distro.
repo_build_os_distro_version: "{{ (ansible_distribution | lower) | replace(' ', '_') }}-{{ ansible_distribution_version.split('.')[:2] | join('.') }}-{{ ansible_architecture | lower }}"
repo_build_release_tag: "untagged"
repo_build_global_links_path: "{{ repo_build_base_path }}/links/{{ repo_build_os_distro_version }}"
repo_build_release_version_path: "os-releases/{{ repo_build_release_tag }}"
repo_build_release_path: "{{ repo_build_base_path }}/{{ repo_build_release_version_path }}/{{ repo_build_os_distro_version }}"
repo_build_dir: "/tmp/openstack-builder"
repo_build_output: "/tmp/openstack-wheel-output"
repo_build_git_dir: "{{ repo_build_base_path }}/openstackgit"
repo_build_pool_dir: "{{ repo_build_base_path }}/pools/{{ repo_build_os_distro_version }}"
# Toggle whether git repositories should be cloned selectively or not
repo_build_git_selective: "{{ true if (repo_build_wheel_selective | bool and repo_build_venv_selective | bool) else false }}"
# Toggle whether a git clone should be forced
repo_build_git_reclone: no
# Toggle the git clone depth
repo_build_git_depth: 1
# Toggle whether wheels should be built selectively or not
repo_build_wheel_selective: "{{ true if repo_build_venv_selective | bool else false }}"
# Toggle whether a wheel rebuild should be forced
repo_build_wheel_rebuild: no
# Toggle whether venvs should be built selectively or not
repo_build_venv_selective: yes
# Toggle whether a venv rebuild should be forced
repo_build_venv_rebuild: no
# Timeout (in minutes) for a venv build
repo_build_venv_timeout: 30
# Optionally set this to change the default index from pypi to an alternative
repo_build_pip_default_index: "https://pypi.python.org/simple"
# Optionally set this to a list of extra indexes to be used when building wheels
#repo_build_pip_extra_indexes:
# - "https://pypi.python.org/simple"
# Optionally set this to a list of packages which must always have the wheel
# compiled from source. This will ensure that a pre-compiled wheel is not
# downloaded from any of the indexes.
#repo_build_pip_no_binary:
# - libvirt-python
repo_build_timeout: 120
repo_build_concurrency: "{{ (((ansible_processor_vcpus|default(1)) | int) > 4) | ternary(8, 4) }}"
repo_build_venv_build_dir: "/tmp/openstack-venv-builder"
repo_build_venv_dir: "{{ repo_build_base_path }}/venvs/{{ repo_build_release_tag }}/{{ repo_build_os_distro_version }}"
# We use find-links here in order to prefer the locally
# built wheels.
repo_build_venv_pip_install_options: >-
--timeout 120
--find-links {{ repo_build_release_path }}
--pre
# NOTE(odyssey4me):
# Not using --always-copy for CentOS/SuSE due to
# https://github.com/pypa/virtualenv/issues/565
repo_build_venv_command_options: >-
{{ virtualenv_bin }}
{{ (ansible_pkg_mgr == 'apt') | ternary('--always-copy', '') }}
--never-download
# Path to the repo build venv binaries
repo_build_bin: "/openstack/venvs/repo-build-{{ repo_build_release_tag }}/bin"
# Python packages to install into the repo build venv
repo_pip_packages:
- cython
- pbr
- requests
- urllib3
- wheel
repo_build_store_pip_sources: false
# Default python packages which will be installed
# into every venv.
repo_venv_default_pip_packages: []
None.
---
- name: Set up repo builds
hosts: repo_all
user: root
roles:
- { role: "repo_build", tags: [ "repo-build" ] }
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.