-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Higher splitting for Github Actions and Cache venv (#1213)
Here is the description for this PR by @YigitElma - I created a new workflow that runs every 2 days and updates the requirements and stores them in a venv that is cached - Black, unit, regression, notebook and benchmark workflows use the cached venv (which takes around 4-8seconds whereas installing dependencies usually more than a minute) - Increase the spitting of `unit`, `notebook`, and `benchmark` workflows. - For some reason I couldn't make the linting test faster using venv (so set it back to old version which is fine), actually for some reason venv made it way slower around 8 minutes?!!!? ### Other Fixes - We stopped using Python 3.8 in our tests with #923 but we forgot to remove them from weekly tests. Since then (I guess the dates check) the weekly tests fail (for the last 3 months). I removed Python 3.8 from weekly tests.
- Loading branch information
Showing
9 changed files
with
295 additions
and
71 deletions.
There are no files selected for viewing
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
name: Cache dependencies | ||
# This workflow is triggered every 2 days and updates the Python | ||
# and pip dependencies cache | ||
on: | ||
schedule: | ||
- cron: '30 4 */2 * *' # This triggers the workflow at 4:30 AM every 2 days | ||
workflow_dispatch: | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
strategy: | ||
matrix: | ||
python-version: ['3.9', '3.10', '3.11', '3.12'] | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Delete old cached file with same python version | ||
run: | | ||
echo "Current Cached files list" | ||
gh cache list | ||
echo "Deleting cached files with pattern: ${{ runner.os }}-venv-${{ matrix.python-version }}-" | ||
for cache_key in $(gh cache list --json key -q ".[] | select(.key | startswith(\"${{ runner.os }}-venv-${{ matrix.python-version }}-\")) | .key"); do | ||
echo "Deleting cache with key: $cache_key" | ||
gh cache delete "$cache_key" | ||
done | ||
- name: Set up virtual environment | ||
run: | | ||
python -m venv .venv-${{ matrix.python-version }} | ||
source .venv-${{ matrix.python-version }}/bin/activate | ||
python -m pip install --upgrade pip | ||
pip install -r devtools/dev-requirements.txt | ||
- name: Cache Python environment | ||
id: cache-env | ||
uses: actions/cache@v4 | ||
with: | ||
path: .venv-${{ matrix.python-version }} | ||
key: ${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('devtools/dev-requirements.txt', 'requirements.txt') }} | ||
|
||
- name: Verify virtual environment activation | ||
run: | | ||
source .venv-${{ matrix.python-version }}/bin/activate | ||
python --version | ||
pip --version | ||
pip list |
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,6 +18,8 @@ jobs: | |
regression_tests: | ||
|
||
runs-on: ubuntu-latest | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
strategy: | ||
matrix: | ||
python-version: ['3.10'] | ||
|
@@ -29,20 +31,36 @@ jobs: | |
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
- name: Install dependencies | ||
|
||
- name: Restore Python environment cache | ||
id: restore-env | ||
uses: actions/cache/restore@v4 | ||
with: | ||
path: .venv-${{ matrix.python-version }} | ||
key: ${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('devtools/dev-requirements.txt', 'requirements.txt') }} | ||
|
||
- name: Set up virtual environment if not restored from cache | ||
if: steps.restore-env.outputs.cache-hit != 'true' | ||
run: | | ||
gh cache list | ||
python -m venv .venv-${{ matrix.python-version }} | ||
source .venv-${{ matrix.python-version }}/bin/activate | ||
python -m pip install --upgrade pip | ||
pip install -r devtools/dev-requirements.txt | ||
pip install matplotlib==3.7.2 | ||
- name: Set Swap Space | ||
uses: pierotofy/set-swap-space@master | ||
with: | ||
swap-size-gb: 10 | ||
|
||
- name: Test with pytest | ||
run: | | ||
source .venv-${{ matrix.python-version }}/bin/activate | ||
pip install matplotlib==3.7.2 | ||
pwd | ||
lscpu | ||
python -m pytest -v -m regression \ | ||
python -m pytest -v -m regression\ | ||
--durations=0 \ | ||
--cov-report xml:cov.xml \ | ||
--cov-config=setup.cfg \ | ||
|
@@ -54,6 +72,7 @@ jobs: | |
--group ${{ matrix.group }} \ | ||
--splitting-algorithm least_duration \ | ||
--db ./prof.db | ||
- name: save coverage file and plot comparison results | ||
if: always() | ||
uses: actions/upload-artifact@v4 | ||
|
@@ -63,6 +82,7 @@ jobs: | |
./cov.xml | ||
./mpl_results.html | ||
./prof.db | ||
- name: Upload coverage | ||
id : codecov | ||
uses: Wandalen/[email protected] | ||
|
Oops, something went wrong.