Transition to hip-cargo format
#1225
This file contains hidden or 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: pfb-imaging CI Workflow | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| on: | |
| push: | |
| branches: [main] | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| quality: | |
| name: Code Quality | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out code | |
| uses: actions/checkout@v6 | |
| - name: Set up uv | |
| uses: astral-sh/setup-uv@v7 | |
| - name: Set up Python | |
| run: uv python install 3.10 | |
| - name: Cache uv dependencies | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cache/uv | |
| key: ${{ runner.os }}-uv-${{ hashFiles('uv.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-uv- | |
| - name: Install dependencies | |
| run: uv sync --extra dev | |
| - name: Check code formatting | |
| run: uv run ruff format --check . | |
| - name: Lint code | |
| run: uv run ruff check . | |
| test: | |
| runs-on: ubuntu-latest | |
| env: | |
| NUMBA_CACHE_DIR: /tmp/numba-cache | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - name: Check out code | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up uv | |
| uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| # This ensures the venv is created and ready before the test step | |
| activate-environment: true | |
| - name: Set up Python ${{ matrix.python-version }} | |
| run: uv python install ${{ matrix.python-version }} | |
| - name: Restore repo times | |
| uses: chetan/git-restore-mtime-action@v2 | |
| - 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@v5 | |
| 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 --disable-epsv ftp://ftp.astron.nl/outgoing/Measures/ > measures_dir.txt | |
| - name: Load cached CASA Measures Data | |
| id: load-cached-casa-measures | |
| uses: actions/cache@v5 | |
| 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 | |
| set -e | |
| for i in {1..3}; do | |
| if curl --disable-epsv ftp://ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar --output WSRT_Measures.ztar; then | |
| break | |
| elif [ $i -eq 3 ]; then | |
| echo "Download failed after 3 attempts."; exit 1 | |
| else | |
| echo "Retrying download..."; sleep 5 | |
| fi | |
| done | |
| tar xvzf WSRT_Measures.ztar -C ~/measures | |
| echo "measures.directory: ~/measures" > ~/.casarc | |
| - name: Install pfb-imaging | |
| run: uv sync --extra full --extra dev --frozen | |
| - name: Run pfb-imaging | |
| run: uv run pfb --help | |
| - name: Run tests | |
| run: | | |
| # Force Ray and JAX to stay within the 2-core limit of the GHA runner | |
| export RAY_NUM_CPUS=2 | |
| export XLA_PYTHON_CLIENT_MEM_FRACTION=0.50 | |
| export OMP_NUM_THREADS=1 | |
| export MKL_NUM_THREADS=1 | |
| export OPENBLAS_NUM_THREADS=1 | |
| export NUMEXPR_NUM_THREADS=1 | |
| uv run pytest -v tests/ |