Update CoCiP-grid data access patterns to reduce duplicate chunk downloads #719
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
# Run unit tests from the ground up | |
# installing "pycontrails" into the Github OS environments | |
name: Unit tests | |
on: | |
# run on push to main | |
push: | |
branches: | |
- main | |
# run on all PRs | |
pull_request: | |
# Allows run manually from the Actions tab | |
workflow_dispatch: | |
# Run if a release is published | |
workflow_call: | |
# Global variables | |
env: | |
PYCONTRAILS_CACHE_DIR: '${{ github.workspace }}/.cache/pycontrails' | |
BADA_CACHE_DIR: '${{ github.workspace }}/.cache/bada/' | |
# disable all permissions at the top level | |
# https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs | |
permissions: {} | |
# This allows a subsequently queued workflow run to interrupt previous runs | |
concurrency: | |
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' | |
cancel-in-progress: true | |
jobs: | |
unit-test: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
pyversion: ['3.9', '3.10', '3.11', '3.12'] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.pyversion }} | |
cache: 'pip' | |
cache-dependency-path: pyproject.toml | |
- name: Cache mypy and pytest | |
id: cache-test | |
uses: actions/cache@v4 | |
with: | |
# Note the caches are specific to branches, so we don't need to specify here | |
# https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache | |
key: ${{ runner.os }}-mypy-pytest | |
path: | | |
${{ github.workspace }}/.mypy_cache | |
${{ github.workspace }}/.pytest_cache | |
- name: 'Authenticate to Google Cloud' | |
uses: 'google-github-actions/auth@v2' | |
with: | |
credentials_json: '${{ secrets.GCP_SERVICE_ACCOUNT }}' | |
- name: 'Set up Cloud SDK' | |
uses: 'google-github-actions/setup-gcloud@v2' | |
# download BADA files for testing | |
- name: BADA files | |
run: | | |
mkdir -p ${{ env.BADA_CACHE_DIR }} | |
gcloud storage cp -r gs://contrails-301217-bada/bada/bada3 ${{ env.BADA_CACHE_DIR }} | |
gcloud storage cp -r gs://contrails-301217-bada/bada/bada4 ${{ env.BADA_CACHE_DIR }} | |
ls -l ${{ env.BADA_CACHE_DIR }} | |
- name: Install make - windows | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
choco install make | |
- name: Install pycontrails (dev) | |
run: | | |
make dev-install | |
# In latest-windows, redirecting stdout to a file uses utf-16 encoding | |
# This gives an error when ssh tries to read the key | |
# Instead don't pre-create the known_hosts file | |
- name: Install pycontrails-bada - windows | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
mkdir -p $HOME/.ssh/ | |
gcloud secrets versions access latest --secret="contrails-301217-github-ssh-key" --out-file="$HOME/.ssh/id_rsa" | |
pip install "pycontrails-bada @ git+ssh://[email protected]/contrailcirrus/pycontrails-bada.git" | |
env: | |
GIT_SSH_COMMAND: "ssh -o StrictHostKeyChecking=no" | |
- name: Install pycontrails-bada - linux | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: | | |
mkdir -p $HOME/.ssh/ | |
ssh-keyscan github.com > $HOME/.ssh/known_hosts | |
gcloud secrets versions access latest --secret="contrails-301217-github-ssh-key" > $HOME/.ssh/id_rsa | |
chmod 600 $HOME/.ssh/id_rsa | |
pip install "pycontrails-bada @ git+ssh://[email protected]/contrailcirrus/pycontrails-bada.git" | |
- name: Show environment | |
run: | | |
pwd | |
ls -l . | |
ls -l pycontrails | |
python --version | |
mypy --version | |
pip list | |
- name: QC & Test | |
shell: bash | |
run: | | |
pip check | |
make black-check | |
make ruff | |
make mypy | |
make pytest |