Skip to content

Migrating Quicktest to PyTest and adding dockerized self hosted runner #2

Migrating Quicktest to PyTest and adding dockerized self hosted runner

Migrating Quicktest to PyTest and adding dockerized self hosted runner #2

name: quicktest-docker
on:
pull_request:
branches:
- dev
- main
workflow_dispatch:
jobs:
# Checkout repo
checkout:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
# Create conda environment, install packages, and run Fastsurfer
run-fastsurfer:
runs-on: self-hosted
needs: checkout
steps:
# Set up Python using setup-python@v3 action
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
# Check if FastSurfer environment already exists
- name: Check Environment
run: |
if [ ! -f "$MAMBAPATH" ]; then
echo "FastSurfer environment does not exist. Creating FastSurfer Environment..."
echo "PROCEED=true" >> $GITHUB_OUTPUT
else
echo "FastSurfer environment exists. Skipping FastSurfer Environment creation..."
echo "PROCEED=false" >> $GITHUB_OUTPUT
fi
id: check-environment
# Create FastSurfer environment if it does not exist
- name: Create FastSurfer Environment
uses: mamba-org/setup-micromamba@v1
with:
environment-file: env/fastsurfer.yml
micromamba-root-path: /home/micromamba
micromamba-binary-path: /home/micromamba-bin/micromamba
log-level: debug
cache-downloads: true
cache-environment: true
init-shell: none
if: steps.check-environment.outputs.PROCEED == 'true'
# Set up cache for python packages
- name: Cache Python packages
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
# Install required python packages
- name: Install package
run: |
python -m pip install --progress-bar off --upgrade pip \
setuptools wheel
python -m pip install --progress-bar off .[test]
# Check if FastSurfer output already exists
- name: Check FastSurfer Output Directory
run: |
if [ -d "$RUNNER_FS_OUTPUT/subject1" ]; then
echo "FastSurfer output directory for subject1 exists. Finishing job..."
echo "PROCEED=false" >> $GITHUB_OUTPUT
exit 0
else
echo "FastSurfer output directory for subject1 does not exist. Running FastSurfer..."
echo "PROCEED=true" >> $GITHUB_OUTPUT
fi
id: check-fastsurfer-output
# Run FastSurfer
- name: Run FastSurfer
run: |
echo "Running FastSurfer..."
export FREESURFER_HOME=/freesurfer
source $FREESURFER_HOME/SetUpFreeSurfer.sh
git config --global --add safe.directory \
/home/actions-runner/_work/FastSurfer/FastSurfer
./brun_fastsurfer.sh --subject_list $RUNNER_FS_MRI_DATA/subjects_list.txt \
--sd $RUNNER_FS_OUTPUT \
--parallel --threads 4 --3T --parallel_subjects surf
if: steps.check-fastsurfer-output.outputs.PROCEED == 'true'
# Run pytest
run-pytest:
runs-on: self-hosted
needs: run-fastsurfer
steps:
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Cache Python packages
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Run pytest
run: python -m pytest test/quicktest