Skip to content

Cache NUMBA kernels between CI runs #931

Cache NUMBA kernels between CI runs

Cache NUMBA kernels between CI runs #931

Workflow file for this run

name: QuartiCal CI Workflow
# Specific github action events that you can lookup in their API
on:
push:
tags:
- 'v*'
pull_request:
env:
POETRY_VERSION: 1.5
jobs:
test:
runs-on: ${{ matrix.os }}
continue-on-error: true
env:
NUMBA_CACHE_DIR: /tmp/numba-cache
strategy:
matrix:
os: [ubuntu-20.04, ubuntu-22.04]
python-version: ["3.9", "3.10"]
steps:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install poetry
uses: abatilo/actions-poetry@v2
with:
poetry-version: ${{ env.POETRY_VERSION }}
- name: Check poetry install
run: poetry --version
# Checkout the source code
- name: Checkout source
uses: actions/checkout@v3
with:
fetch-depth: 0 # Full fetch required to restore times.
- name: Restore repo times
uses: chetan/git-restore-mtime-action@v2
# Upgrade pip and setuptools
- name: Upgrade pip and setuptools
run: python -m pip install -U pip setuptools
- name: Create Key and Numba Cache Directory
id: numba-key
run: |
mkdir -p ${{ env.NUMBA_CACHE_DIR }}
echo "timestamp=$(/bin/date -u '+%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT
- name: Cache Numba Kernels
uses: actions/cache@v3
with:
key: numba-cache-${{ matrix.python-version }}-${{ steps.numba-key.outputs.timestamp }}
restore-keys: numba-cache-${{ matrix.python-version }}-
path: ${{ env.NUMBA_CACHE_DIR }}
- name: List the measures directory
run: curl ftp://ftp.astron.nl/outgoing/Measures/ > measures_dir.txt
- name: Load cached CASA Measures Data
id: load-cached-casa-measures
uses: actions/cache@v3
with:
key: casa-measures-${{ hashFiles('measures_dir.txt')}}
path: |
~/measures
~/.casarc
- name: Download and install CASA Measures Data
if: steps.load-cached-casa-measures.outputs.cache-hit != 'true'
run: |
mkdir -p ~/measures
curl ftp://ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar | tar xvzf - -C ~/measures
echo "measures.directory: ~/measures" > ~/.casarc
# Install the package with testing extras
- name: Install QuartiCal
run: poetry install
# Check that the help prints, suggesting that everything is ok.
- name: Run QuartiCal
run: poetry run goquartical
# Run the test cases
- name: Testing Step
run: poetry run pytest -v testing/tests
deploy:
needs: [test]
runs-on: ubuntu-latest
# Run on tagged push (generated by tbump).
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
steps:
- name: Set up Python 3.8
uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Install poetry
uses: abatilo/actions-poetry@v2
with:
poetry-version: ${{ env.POETRY_VERSION }}
- name: Check poetry install
run: poetry --version
- name: Checkout source
uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Build distributions
run: poetry build
- name: Publish distribution to Test PyPI
uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.TEST_PYPI }}
repository_url: https://test.pypi.org/legacy/
continue-on-error: true
- name: Publish distribution to PyPI
uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.PYPI }}
release:
needs: [deploy]
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Release
uses: softprops/[email protected]