From 5c2bb9edfef55f2b714174eb4e9ce356a91f15ac Mon Sep 17 00:00:00 2001 From: John Agapiou Date: Thu, 12 Sep 2024 06:07:16 -0700 Subject: [PATCH] Cache examples venv in GitHub actions for faster test runs PiperOrigin-RevId: 673813732 Change-Id: I2ab61c3f767bb64f33e20515e68fc6c8edb940a4 --- .github/actions/install-concordia/action.yml | 32 +++++++------ .github/actions/install-examples/action.yml | 48 ++++++++++++++++++-- 2 files changed, 64 insertions(+), 16 deletions(-) diff --git a/.github/actions/install-concordia/action.yml b/.github/actions/install-concordia/action.yml index 521dcce3..229b1414 100644 --- a/.github/actions/install-concordia/action.yml +++ b/.github/actions/install-concordia/action.yml @@ -7,35 +7,41 @@ inputs: default: '3.11' type: string +outputs: + key: + description: Cache key that identifies the installation + value: ${{ steps.cache-key.outputs.key }} + runs: using: composite steps: - - name: Get current runner - id: os-info + - name: Set up Python ${{ inputs.python-version }} + id: setup-python + uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + with: + python-version: ${{ inputs.python-version }} + + - name: Get cache key + id: cache-key shell: bash run: | if [ "${RUNNER_OS}" = 'macOS' ]; then - echo "name=$(sw_vers -productName)" >> $GITHUB_OUTPUT - echo "version=$(sw_vers -productVersion)" >> $GITHUB_OUTPUT + readonly name="$(sw_vers -productName)" + readonly version="$(sw_vers -productVersion)" elif [ "${RUNNER_OS}" = 'Linux' ]; then - echo "name=$(lsb_release -i -s)" >> $GITHUB_OUTPUT - echo "version=$(lsb_release -r -s)" >> $GITHUB_OUTPUT + readonly name="$(lsb_release -i -s)" + readonly version="$(lsb_release -r -s)" else exit 1 fi - - - name: Set up Python ${{ inputs.python-version }} - id: setup-python - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 - with: - python-version: ${{ inputs.python-version }} + echo "key=${name}-${version}-py${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('setup.py') }}" >> $GITHUB_OUTPUT - name: Restore Concordia installation id: restore uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 with: path: venv - key: install-concordia-${{ steps.os-info.outputs.name }}-${{ steps.os-info.outputs.version }}-py${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('setup.py') }} + key: install-concordia-${{ steps.cache-key.outputs.key }} - name: Create venv if: steps.restore.outputs.cache-hit != 'true' diff --git a/.github/actions/install-examples/action.yml b/.github/actions/install-examples/action.yml index 17b43a0b..0289411e 100644 --- a/.github/actions/install-examples/action.yml +++ b/.github/actions/install-examples/action.yml @@ -1,15 +1,57 @@ name: install-examples +inputs: + python-version: + description: Python version + required: false + default: '3.11' + type: string + runs: using: composite steps: - name: Install Concordia + id: install-concordia uses: ./.github/actions/install-concordia + with: + python-version: ${{ inputs.python-version }} + + - name: Restore Examples installation + id: restore + uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 + with: + path: venv + key: install-examples-${{ steps.install-concordia.outputs.key }}-${{ hashFiles('examples/requirements.txt') }} + + - name: Activate venv + shell: bash + run: | + echo "${PWD}/venv/bin" >> $GITHUB_PATH - name: Install requirements for examples + if: steps.restore.outputs.cache-hit != 'true' shell: bash - run: pip install -r examples/requirements.txt + run: | + pip install -r examples/requirements.txt - - name: Show installed dependencies + - name: Show installation shell: bash - run: pip list + run: | + which python + python --version + which pip + pip --version + which pylint + pylint --version + which pytest + pytest --version + which pytype + pytype --version + pip list + + - name: Save Examples installation + if: steps.restore.outputs.cache-hit != 'true' + uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 + with: + path: venv + key: ${{ steps.restore.outputs.cache-primary-key }}