Brian Haley 84082ed982 Update ensure-twine role
Install twine into a venv and set appropriate environment
variables. Also added tests.

Based on commit adding `ensure-nox` (77b1b24) role.

Related-bug: #2095514
Change-Id: Ibb4e89f79879b4d0ae0294440c9c0b79fc57a7fa
2025-01-31 12:23:08 -05:00

45 lines
1.3 KiB
YAML

- name: Install pip
include_role:
name: ensure-pip
- name: Check if twine is installed
shell: |
command -v {{ pypi_twine_executable }} {{ ensure_twine_venv_path }}/bin/twine || exit 1
args:
executable: /bin/bash
register: twine_preinstalled
failed_when: false
- name: Export preinstalled pypi_twine_executable
set_fact:
pypi_twine_executable: "{{ twine_preinstalled.stdout_lines[0] }}"
cacheable: true
when: twine_preinstalled.rc == 0
- name: Install twine to local env
when: twine_preinstalled.rc != 0
block:
- name: Create local venv
command: "{{ ensure_pip_virtualenv_command }} {{ ensure_twine_venv_path }}"
- name: Install twine to local venv
command: "{{ ensure_twine_venv_path }}/bin/pip install twine{{ ensure_twine_version }}"
- name: Export installed pypi_twine_executable path
set_fact:
pypi_twine_executable: "{{ ensure_twine_venv_path }}/bin/twine"
cacheable: true
- name: Output twine version
command: "{{ pypi_twine_executable }} --version"
- name: Make global symlink
when:
- ensure_twine_global_symlink
- pypi_twine_executable != '/usr/local/bin/twine'
file:
state: link
src: "{{ pypi_twine_executable }}"
dest: /usr/local/bin/twine
become: yes