--- name: Test Dependencies on: workflow_call: inputs: distro-slug: required: true type: string description: The OS slug to run tests against nox-session: required: true type: string description: The nox session to run salt-version: type: string required: true description: The Salt version to set prior to running tests. cache-prefix: required: true type: string description: Seed used to invalidate caches platform: required: true type: string description: The platform being tested arch: required: true type: string description: The platform arch being tested nox-version: required: true type: string description: The nox version to install python-version: required: false type: string description: The python version to run tests with default: "3.10" package-name: required: false type: string description: The onedir package name to use default: salt env: COLUMNS: 190 PIP_INDEX_URL: "https://pypi-proxy.saltstack.net/root/local/+simple/" PIP_EXTRA_INDEX_URL: "https://pypi.org/simple" jobs: dependencies: name: Test Dependencies runs-on: ${{ inputs.distro-slug }} timeout-minutes: 90 steps: - name: "Throttle Builds" shell: bash run: | t=$(python3 -c 'import random, sys; sys.stdout.write(str(random.randint(1, 15)))'); echo "Sleeping $t seconds"; sleep "$t" - name: Checkout Source Code uses: actions/checkout@v4 - name: Cache nox.${{ inputs.distro-slug }}.tar.* for session ${{ inputs.nox-session }} id: nox-dependencies-cache uses: actions/cache@v3 with: path: nox.${{ inputs.distro-slug }}.tar.* key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.arch }}|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') }} - name: Download Onedir Tarball as an Artifact if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' uses: actions/download-artifact@v3 with: name: ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz path: artifacts/ - name: Decompress Onedir Tarball if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' shell: bash run: | python3 -c "import os; os.makedirs('artifacts', exist_ok=True)" cd artifacts tar xvf ${{ inputs.package-name }}-${{ inputs.salt-version }}-onedir-${{ inputs.platform }}-${{ inputs.arch }}.tar.xz - name: Set up Python ${{ inputs.python-version }} if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' uses: actions/setup-python@v4 with: python-version: "${{ inputs.python-version }}" - name: Install System Dependencies if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' run: | brew install openssl@3 - name: Install Nox if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' run: | python3 -m pip install 'nox==${{ inputs.nox-version }}' - name: Install Dependencies if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' env: PRINT_TEST_SELECTION: "0" PRINT_SYSTEM_INFO: "0" run: | export PYCURL_SSL_LIBRARY=openssl export LDFLAGS="-L/usr/local/opt/openssl@3/lib" export CPPFLAGS="-I/usr/local/opt/openssl@3/include" export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig" nox --install-only -e ${{ inputs.nox-session }} - name: Cleanup .nox Directory if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' run: | nox -e "pre-archive-cleanup(pkg=False)" - name: Compress .nox Directory if: steps.nox-dependencies-cache.outputs.cache-hit != 'true' run: | nox -e compress-dependencies -- ${{ inputs.distro-slug }} - name: Upload Nox Requirements Tarball uses: actions/upload-artifact@v3 with: name: nox-${{ inputs.distro-slug }}-${{ inputs.nox-session }} path: nox.${{ inputs.distro-slug }}.tar.*