From 0d097964be33ac73ec18af04e8e89faf4a354569 Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Fri, 22 Jul 2022 12:22:39 -0400 Subject: [PATCH] Automatically install setuptools-scm in script called from Makefile --- .github/workflows/ci.yml | 11 ++++++++++- .github/workflows/stage.yml | 2 +- tools/ansible/build.yml | 7 ++++--- .../roles/dockerfile/templates/Dockerfile.j2 | 2 +- tools/scripts/scm_version.py | 16 +++++++++++++++- tox.ini | 2 -- 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74bc2122d9..15ff2598a7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -111,9 +111,18 @@ jobs: repository: ansible/awx-operator path: awx-operator + - name: Get python version from Makefile + working-directory: awx + run: echo py_version=`make PYTHON_VERSION` >> $GITHUB_ENV + + - name: Install python ${{ env.py_version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ env.py_version }} + - name: Install playbook dependencies run: | - python3 -m pip install docker setuptools_scm + python3 -m pip install docker - name: Build AWX image working-directory: awx diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index 24710e8789..af8054058e 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -65,7 +65,7 @@ jobs: - name: Install playbook dependencies run: | - python3 -m pip install docker setuptools_scm + python3 -m pip install docker - name: Build and stage AWX working-directory: awx diff --git a/tools/ansible/build.yml b/tools/ansible/build.yml index 81a69cf443..3ac9004944 100644 --- a/tools/ansible/build.yml +++ b/tools/ansible/build.yml @@ -5,15 +5,16 @@ tasks: - name: Get version from SCM if not explicitly provided shell: | - python3 -m setuptools_scm | cut -d + -f -1 + make print-VERSION | cut -d + -f -1 args: chdir: '../../' - register: setup_py_version + register: scm_version + failed_when: not scm_version.stdout when: awx_version is not defined - name: Set awx_version set_fact: - awx_version: "{{ setup_py_version.stdout }}" + awx_version: "{{ scm_version.stdout }}" when: awx_version is not defined - include_role: diff --git a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 index 79c5448548..ccd4a33d7c 100644 --- a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 +++ b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 @@ -43,7 +43,7 @@ RUN dnf -y update && dnf install -y 'dnf-command(config-manager)' && \ xmlsec1-devel \ xmlsec1-openssl-devel -RUN pip3 install virtualenv setuptools_scm build +RUN pip3 install virtualenv build # Install & build requirements diff --git a/tools/scripts/scm_version.py b/tools/scripts/scm_version.py index 78a24f87e6..8bff3b4599 100644 --- a/tools/scripts/scm_version.py +++ b/tools/scripts/scm_version.py @@ -1,4 +1,18 @@ -from setuptools_scm import get_version +import os +import sys +import subprocess +import traceback + +try: + from setuptools_scm import get_version +except ModuleNotFoundError: + sys.stderr.write("Unable to import setuptools-scm, attempting to install now...\n") + + os.environ['PIP_DISABLE_PIP_VERSION_CHECK'] = '1' + subprocess.check_output([sys.executable, '-m', 'ensurepip']) + subprocess.check_output([sys.executable, '-m', 'pip', 'install', 'setuptools-scm']) + + from setuptools_scm import get_version version = get_version(root='../..', relative_to=__file__) print(version) diff --git a/tox.ini b/tox.ini index ad5331569c..4991b0aa9f 100644 --- a/tox.ini +++ b/tox.ini @@ -3,10 +3,8 @@ isolated_build = True [testenv:linters] deps = - make black flake8 - setuptools-scm yamllint allowlist_externals = make setenv =