Transition to hip-cargo format
#1211
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: | |
| should-run: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| run: ${{ steps.check.outputs.should_run }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 # This ensures we have access to the commit history | |
| - id: check | |
| shell: bash | |
| run: | | |
| if [ "${{ github.event_name }}" == "pull_request" ] || [ "${{ github.event_name }}" == "pull_request_target" ]; then | |
| message="${{ github.event.pull_request.head.sha }}" | |
| # Fetch the actual commit message since we only get the SHA in PR context | |
| message=$(git ls-remote "${{ github.event.pull_request.head.repo.clone_url }}" "${{ github.event.pull_request.head.ref }}" | cut -f1 | xargs git show --format=%B -s) | |
| else | |
| message="${{ github.event.head_commit.message }}" | |
| fi | |
| echo "Event type: ${{ github.event_name }}" | |
| echo "Original message: '$message'" | |
| message="${message,,}" # Convert to lowercase | |
| echo "Lowercase message: '$message'" | |
| skip_patterns=( | |
| 'skip ci' | |
| 'ci skip' | |
| 'no ci' | |
| 'skip-ci' | |
| 'ci-skip' | |
| 'skip_ci' | |
| 'ci_skip' | |
| 'noci' | |
| ) | |
| should_run="true" | |
| for pattern in "${skip_patterns[@]}"; do | |
| echo "Testing pattern: '$pattern'" | |
| if echo "$message" | grep -q "$pattern"; then | |
| echo "MATCH FOUND for pattern: '$pattern'" | |
| should_run="false" | |
| break | |
| else | |
| echo "No match for pattern: '$pattern'" | |
| fi | |
| done | |
| echo "Should run: $should_run" | |
| echo "should_run=$should_run" >> $GITHUB_OUTPUT | |
| quality: | |
| needs: should-run | |
| if: needs.should-run.outputs.run == 'true' | |
| 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@v4 | |
| 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: | |
| needs: should-run | |
| if: needs.should-run.outputs.run == 'true' | |
| 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 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| run: uv python install ${{ matrix.python-version }} | |
| - name: Cache uv dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/uv | |
| key: ${{ runner.os }}-uv-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-uv-py${{ matrix.python-version }}- | |
| ${{ runner.os }}-uv- | |
| - 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 | |
| curl --disable-epsv ftp://ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar | tar xvzf - -C ~/measures | |
| echo "measures.directory: ~/measures" > ~/.casarc | |
| - name: Install pfb-imaging | |
| run: uv sync --extra full --extra dev | |
| - name: Run pfb-imaging | |
| run: uv run pfb --help | |
| - name: Run tests | |
| run: uv run pytest -v tests/ |