salt/.github/actions/setup-python-tools-scripts/action.yml
2025-01-23 16:36:35 -07:00

75 lines
2.7 KiB
YAML

---
name: setup-python-tools-scripts
description: Setup 'python-tools-scripts'
inputs:
cache-prefix:
required: true
description: Seed used to invalidate caches
cwd:
description: The directory the salt checkout is located in
default: "."
outputs:
version:
description: "Return the python-tools-scripts version"
value: ${{ steps.get-version.outputs.version }}
runs:
using: composite
steps:
- name: Get Python Version
id: get-python-version
uses: ./.github/actions/get-python-version
with:
python-binary: python3
- name: Define Cache Hash
id: venv-hash
shell: bash
run: |
VENV_NAME_HASH=$(echo "${{ inputs.cache-prefix }}|${{ github.workflow }}|${{
steps.get-python-version.outputs.version-sha256sum }}|${{
hashFiles('requirements/**/*.txt', 'tools/**/*.py') }}" | sha256sum | cut -d ' ' -f 1)
echo "TOOLS_VIRTUALENV_CACHE_SEED=$VENV_NAME_HASH" | tee -a "${GITHUB_ENV}"
echo "venv-hash=$VENV_NAME_HASH" | tee -a "${GITHUB_OUTPUT}"
- uses: ./.github/actions/cached-virtualenv
id: tools-virtualenv
with:
name: tools.${{ steps.venv-hash.outputs.venv-hash }}
cache-seed: tools|${{ steps.venv-hash.outputs.venv-hash }}
- name: Restore Python Tools Virtualenvs Cache
uses: ./.github/actions/cache
with:
path: ${{ inputs.cwd }}/.tools-venvs
key: ${{ inputs.cache-prefix }}|${{ steps.venv-hash.outputs.venv-hash }}
- name: Install 'python-tools-scripts'
shell: bash
working-directory: ${{ inputs.cwd }}
run: |
PYTHON_EXE=${{ steps.tools-virtualenv.outputs.python-executable }}
${PYTHON_EXE} -m ensurepip --upgrade
(${PYTHON_EXE} -m pip install --help | grep break-system-packages > /dev/null 2>&1) && exitcode=0 || exitcode=1
if [ $exitcode -eq 0 ]; then
${PYTHON_EXE} -m pip install --break-system-packages --upgrade setuptools
${PYTHON_EXE} -m pip install --break-system-packages -r requirements/static/ci/py${{ steps.get-python-version.outputs.version }}/tools.txt
else
${PYTHON_EXE} -m pip install --upgrade setuptools
${PYTHON_EXE} -m pip install -r requirements/static/ci/py${{ steps.get-python-version.outputs.version }}/tools.txt
fi
- name: Get 'python-tools-scripts' Version
id: get-version
shell: bash
working-directory: ${{ inputs.cwd }}
run: |
# The first time `tools` runs with newer virtual enviroments we need to disregard the output
tools --debug --version
VERSION=$(tools --version | tail -n 1)
echo "version=$VERSION" >> "${GITHUB_OUTPUT}"