From 528a087a9aab0d51c154a0193b579945049ecf07 Mon Sep 17 00:00:00 2001 From: Jeffrey Clark Date: Mon, 22 Apr 2024 09:27:44 -0500 Subject: [PATCH] python venv cache support --- .github/workflows/self-test.yml | 1 + action.yml | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/.github/workflows/self-test.yml b/.github/workflows/self-test.yml index e2b1f54..dcfb7df 100644 --- a/.github/workflows/self-test.yml +++ b/.github/workflows/self-test.yml @@ -57,6 +57,7 @@ jobs: with: style: file files-changed-only: false + cache: true # to ignore all build folder contents ignore: build|venv database: build diff --git a/action.yml b/action.yml index 03dfff3..ceab931 100644 --- a/action.yml +++ b/action.yml @@ -55,6 +55,11 @@ inputs: [re-running jobs or workflows](https://docs.github.com/en/actions/managing-workflow-runs/re-running-workflows-and-jobs). required: false default: info + cache: + description: | + This controls if the python virtual environment is cached. + required: false + default: false lines-changed-only: description: | This controls what part of the files are analyzed. The following values are accepted: @@ -234,6 +239,19 @@ runs: fi fi + - uses: actions/github-script@v7 + id: requirements-hash + with: + script: return require('fs').createReadStream(require('path').join(process.env.GITHUB_ACTION_PATH, 'requirements.txt')).pipe(require('crypto').createHash('sha1').setEncoding('hex'), 'finish').digest('hex') + result-encoding: string + + - uses: actions/cache@v4 + if: ${{ inputs.cache == 'true' }} + with: + key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ steps.requirements-hash.outputs.result }} + restore-keys: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}- + path: ${{ github.action_path }}/venv + - name: Setup python venv (Unix) if: runner.os == 'Linux' || runner.os == 'macOS' shell: bash