[primer] Skip regenerate cache step for cache hits (#8837) #1076
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Most of this is inspired by the mypy primer | |
# See: https://github.com/hauntsaninja/mypy_primer | |
# This is the primer job that runs on the default 'main' branch | |
# It is also responsible for caching the packages to prime on | |
name: Primer / Main | |
on: | |
push: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
# This needs to be the SAME as in the PR and comment job | |
CACHE_VERSION: 3 | |
KEY_PREFIX: venv-primer | |
permissions: | |
contents: read | |
jobs: | |
run-primer: | |
name: Run / ${{ matrix.python-version }} / batch index ${{ matrix.batchIdx }} | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.11"] | |
batches: [4] | |
batchIdx: [0, 1, 2, 3] | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.3 | |
- name: Set up Python ${{ matrix.python-version }} | |
id: python | |
uses: actions/setup-python@v4.6.1 | |
with: | |
python-version: ${{ matrix.python-version }} | |
check-latest: true | |
# Create a re-usable virtual environment | |
- name: Create Python virtual environment cache | |
id: cache-venv | |
uses: actions/cache@v3.3.1 | |
with: | |
path: venv | |
key: | |
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{ | |
env.KEY_PREFIX }}-${{ env.CACHE_VERSION }}-${{ hashFiles('pyproject.toml', | |
'requirements_test.txt', 'requirements_test_min.txt', | |
'requirements_test_pre_commit.txt') }} | |
- name: Create Python virtual environment | |
if: steps.cache-venv.outputs.cache-hit != 'true' | |
run: | | |
python -m venv venv | |
. venv/bin/activate | |
python -m pip install -U pip setuptools wheel | |
pip install -U -r requirements_test.txt | |
# Cache primer packages | |
- name: Get commit string | |
id: commitstring | |
run: | | |
. venv/bin/activate | |
python tests/primer/__main__.py prepare --make-commit-string | |
output=$(python tests/primer/__main__.py prepare --read-commit-string) | |
echo "commitstring=$output" >> $GITHUB_OUTPUT | |
- name: Restore projects cache | |
id: cache-projects | |
uses: actions/cache@v3.3.1 | |
with: | |
path: tests/.pylint_primer_tests/ | |
key: >- | |
${{ runner.os }}-${{ matrix.python-version }}-${{ | |
steps.commitstring.outputs.commitstring }}-primer | |
- name: Regenerate cache | |
if: steps.cache-projects.outputs.cache-hit != 'true' | |
run: | | |
. venv/bin/activate | |
python tests/primer/__main__.py prepare --clone | |
- name: Upload output diff | |
uses: actions/upload-artifact@v3.1.2 | |
with: | |
name: primer_commitstring | |
path: | |
tests/.pylint_primer_tests/commit_string_${{ matrix.python-version }}.txt | |
# Run primer | |
- name: Run pylint primer | |
run: | | |
. venv/bin/activate | |
pip install -e . | |
python tests/primer/__main__.py run --type=main --batches=${{ matrix.batches }} --batchIdx=${{ matrix.batchIdx }} 2>warnings.txt | |
- name: Echo warnings | |
if: success() || failure() | |
run: | | |
WARNINGS=$(head -c 65000 < warnings.txt) | |
if [[ $WARNINGS ]] | |
then echo "::warning ::$WARNINGS" | |
fi | |
- name: Upload output | |
uses: actions/upload-artifact@v3.1.2 | |
with: | |
name: primer_output | |
path: >- | |
tests/.pylint_primer_tests/output_${{ steps.python.outputs.python-version | |
}}_main_batch${{ matrix.batchIdx }}.txt |