Skip to content

WIP: Implement Pydra code-generators #57

WIP: Implement Pydra code-generators

WIP: Implement Pydra code-generators #57

Workflow file for this run

#This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
# For deployment, it will be necessary to create a PyPI API token and store it as a secret
# https://docs.github.com/en/actions/reference/encrypted-secrets
name: Pydra
on:
push:
branches: [ master ]
tags: [ '*' ]
pull_request:
branches:
- master
- dev
jobs:
build:
runs-on: ubuntu-latest
env:
CFLAGS: -Werror
QT_SELECT: qt6
SCCACHE_GHA_ENABLED: "true"
SCCACHE_CACHE_SIZE: "2G"
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: Determine MRtrix3 version
run: echo "MRTRIX3_VERSION=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
- name: install dependencies
run: |
sudo apt-get update
sudo apt-get install clang qt6-base-dev libglvnd-dev libeigen3-dev zlib1g-dev libfftw3-dev ninja-build
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.3
- name: Get CMake
uses: lukka/get-cmake@latest
with:
cmakeVersion: '3.16.3'
- name: Print CMake version
run: cmake --version
- name: configure
run: >
cmake
-B build
-G Ninja
-D CMAKE_BUILD_TYPE=Release
-D MRTRIX_BUILD_TESTS=ON
-D MRTRIX_STL_DEBUGGING=ON
-D MRTRIX_WARNINGS_AS_ERRORS=ON
-D CMAKE_C_COMPILER=clang
-D CMAKE_CXX_COMPILER=clang++
-D CMAKE_INSTALL_PREFIX=$(pwd)/install
- name: Build Mrtrix
run: cmake --build build
- name: Install Mrtrix
run: cmake --install build
- name: Set PATH Variable
run: echo "PATH=$PATH:$(pwd)/install/bin" >> $GITHUB_ENV
- name: Set LD_LIBRARY_PATH Variable
run: echo "LD_LIBRARY_PATH=$(pwd)/install/lib" >> $GITHUB_ENV
- name: Set up Python
uses: actions/setup-python@v2
- name: Install Python build dependencies
run: |
python -m pip install --upgrade pip
- name: Clone Pydra-MRtrix3 package
run: git clone https://github.com/nipype/pydra-mrtrix3.git pydra
- name: Install pydra-auto-gen requirements
run: |
pip install -e ./pydra/fileformats-medimage-mrtrix3
pip install -e ./pydra/fileformats-medimage-mrtrix3-extras
pip install -e ./pydra[dev]
- name: Generate task specifications
run: >
./pydra/generate.py
$(pwd)/install/bin
$(pwd)/pydra/src
$MRTRIX3_VERSION
--log-errors
--latest
- name: Upload MRtrix3 install
uses: actions/upload-artifact@v2
with:
name: MRtrix3
path: mrtrix3/install
- name: Upload auto-gen pydra
uses: actions/upload-artifact@v2
with:
name: AutoGen
path: pydra/tasks/mrtrix3/$MRTRIX3_VERSION
- name: Write version file
run: echo $MRTRIX3_VERSION > mrtrix3_version.txt
- name: Upload version file
uses: actions/upload-artifact@v2
with:
name: VersionFile
path: pydra/tasks/mrtrix3/$MRTRIX3_VERSION
test:
needs: [build]
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.11]
defaults:
run:
shell: bash -l {0}
steps:
- name: Download version file
uses: actions/download-artifact@v2
with:
name: VersionFile
path: mrtrix3_version.txt
- name: Extract Mrtrix version
run: echo "MRTRIX3_VERSION=$(cat mrtrix3_version.txt)" >> $GITHUB_ENV
- uses: actions/checkout@v2
- name: Install Minconda
uses: conda-incubator/setup-miniconda@v2
with:
auto-activate-base: true
activate-environment: ""
- name: Install MRtrix via Conda
run: |
conda install -c mrtrix3 mrtrix3
mrconvert --version
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
- name: Install task package
run: |
pip install pydra/fileformats-medimage-mrtrix pydra/fileformats-medimage-mrtrix-extras '.[test]'
python -c "import pydra.tasks.mrtrix3 as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
python -c "import pydra as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
- name: Test with pytest
run: |
pytest -sv --doctest-modules pydra/tasks/mrtrix3 \
--cov pydra.tasks.mrtrix3 --cov-report xml
- uses: codecov/codecov-action@v1
if: ${{ always() }}