Skip to content

Add RAPIDS-Singlecell #7

Add RAPIDS-Singlecell

Add RAPIDS-Singlecell #7

name: Integration test RSC
on:
schedule:
- cron: "0 0 * * *" # Run daily at midnight UTC
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test:
name: Integration test/ test (3.x rapids-singlecell)
runs-on: "cirun-aws-gpu--${{ github.run_id }}"
timeout-minutes: 30
outputs:
failure_type: ${{ steps.export_failure.outputs.failure_type }}
defaults:
run:
shell: bash -el {0}
working-directory: rapids_singlecell
env:
GH_TOKEN: ${{ secrets.TOKEN_FOR_ISSUE_WRITE }}
steps:
- name: Checkout this repository (integration-testing)
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Checkout rapids-singlecell
uses: actions/checkout@v4
with:
repository: scverse/rapids_singlecell
fetch-depth: 0
path: rapids_singlecell
- name: Nvidia SMI sanity check
run: nvidia-smi
- uses: mamba-org/setup-micromamba@v2
with:
environment-file: rapids_singlecell/ci/environment.yml
init-shell: >-
bash
post-cleanup: 'all'
- name: Install rapids-singlecell
id: install_pkg
run: >-
pip install -e .[test]
"scanpy @ git+https://github.com/scverse/scanpy.git"
"anndata @ git+https://github.com/scverse/anndata.git"
- name: Pip list
run: pip list
- name: Set failure type for install
if: failure()
run: |
echo "Installation failed for rapids-singlecell"
echo "failure_type=install" >> $GITHUB_ENV
- name: Run test
id: run_tests
run: pytest
- name: Set failure type for test
if: failure() && env.failure_type != 'install'
run: |
echo "Test failed for rapids-singlecell"
echo "failure_type=test" >> $GITHUB_ENV
- name: Check for open failure issue
if: failure() && github.event_name == 'schedule'
id: find_issue
run: |
ISSUE_TITLE="Integration Testing CI ${failure_type^} Failure on python rapids_singlecell"
echo "Checking for existing issue: $ISSUE_TITLE"
ISSUE_COUNT=$(gh issue list --repo scverse/rapids_singlecell --state open --search "${ISSUE_TITLE}" --json number --jq 'length')
if [[ "$ISSUE_COUNT" -gt 0 ]]; then
echo "${failure_type^} failure issue already exists for today."
echo "issue_exists=true" >> $GITHUB_ENV
else
echo "issue_exists=false" >> $GITHUB_ENV
echo "issue_title=$ISSUE_TITLE" >> $GITHUB_ENV
fi
- name: Report failure issue
if: failure() && env.issue_exists == 'false' && github.event_name == 'schedule'
run: |
RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
ISSUE_BODY="The daily CI failed on ${failure_type} for rapids_singlecell failed. Please go to [the logs of the integration testing repo](${RUN_URL}) to review. @scverse/anndata"
gh issue create --repo scverse/rapids_singlecell --title "${{ env.issue_title }}" --body "${ISSUE_BODY}"
keepalive-job:
name: Keepalive Workflow
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- name: Re-enable workflow
env:
GITHUB_TOKEN: ${{ github.token }}
shell: sh
run: |
gh api --verbose -X PUT "repos/${GITHUB_REPOSITORY}/actions/workflows/rsc_integration-test.yml/enable"