Cache NUMBA kernels between CI runs #931
Workflow file for this run
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
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] |