-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
132 lines (123 loc) · 4.62 KB
/
primer_run_main.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# 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: 4
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.9", "3.13"]
batches: [4]
batchIdx: [0, 1, 2, 3]
steps:
- name: Check out code from GitHub
uses: actions/[email protected]
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/[email protected]
with:
python-version: ${{ matrix.python-version }}
check-latest: true
# Create a re-usable virtual environment
- name: Restore Python virtual environment cache
id: cache-venv
uses: actions/cache/[email protected]
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
# Save cached Python environment (explicit because cancel-in-progress: true)
- name: Save Python virtual environment to cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache/[email protected]
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') }}
# 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/[email protected]
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: Save projects cache
if: steps.cache-projects.outputs.cache-hit != 'true'
uses: actions/cache/[email protected]
with:
path: tests/.pylint_primer_tests/
key: >-
${{ runner.os }}-${{ matrix.python-version }}-${{
steps.commitstring.outputs.commitstring }}-primer
- name: Upload commit string
uses: actions/[email protected]
if: matrix.batchIdx == 0
with:
name: primer_commitstring_${{ matrix.python-version }}
path:
tests/.pylint_primer_tests/commit_string_${{ matrix.python-version }}.txt
# Run primer
- name: Run pylint primer
run: |
. venv/bin/activate
pip install .
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/[email protected]
with:
name:
primer_output_main_${{ matrix.python-version }}_batch${{ matrix.batchIdx }}
path: >-
tests/.pylint_primer_tests/output_${{ matrix.python-version }}_main_batch${{
matrix.batchIdx }}.txt