Skip to content

Commit

Permalink
refactor build into reusable workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
lrauschning committed Dec 10, 2024
1 parent 5f1f8fb commit c0d1852
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 39 deletions.
61 changes: 22 additions & 39 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,54 +1,37 @@
# This workflow will build msyd as a python package, and call the CLI interface to check the install worked
# adapted from
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
# adapted from https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Build and test msyd
name: Build msyd
description: "Checks out, installs dependencies and builds the msyd package. Formulated as a reusable workflow to reduce code duplication in testing."

on:
push:
branches: [ "main", "dev" ]
pull_request:
branches: [ "main", "dev" ]
workflow_call:
inputs:
python-version:
description: 'Python version to use'
required: true
default: '3.12'

jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
run:
using: composite
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Python ${{ inputs.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
python-version: ${{ inputs.python-version }}
cache: pip
- name: Install dependencies
- name: Update pip
run: python -m pip install --upgrade pip setuptools
- name: Install SyRI manually
run: |
python -m pip install --upgrade pip setuptools
# manually install syris dependencies
# the python version spoofing requires the --no-deps flag, so this is necessary
pip install Cython numpy pandas scipy psutil igraph longestrunsubsequence pysam pulp
# manually use pip to install syri from github, as it isn't on pypi
# spoof python version to get around bounds check
pip install 'git+https://github.com/schneebergerlab/syri.git' --python-version '3.10' --no-deps --no-warn-conflicts --target $(python -m site --user-site)
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Build package
- name: Install other dependencies
run: pip install -r requirements.txt
- name: Build msyd
run: pip install .
test:
runs-on: ubuntu-latest
needs: build
steps:
- name: Test installation
run: |
msyd -h
msyd call -h
msyd view -h
- name: Test example_run.sh
run: |
# alias to a call launching the syri entrypoint from python
# necessary, as the hacky git install does not install the CLI entrypoints
alias syri='python <(echo "import syri.scripts.syri;syri.scripts.syri.main()")'
./example/example_workflow.sh
39 changes: 39 additions & 0 deletions .github/workflows/test_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# This workflow will use the build action to build the msyd python package, and call the CLI interface to check the install worked
name: Test build

on:
push:
branches: [ "main", "dev" ]
pull_request:
branches: [ "main", "dev" ]

# Cancel if a newer run is started
# taken from https://github.com/nf-core/modules/blob/master/.github/workflows/nf-test.yml
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true


jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- name: Build msyd
uses: ./.github/workflows/build.yml
with:
python-version: ${{ matrix.python-version }}
- name: Test installation
run: |
msyd --version
msyd -h
msyd call -h
msyd view -h
- name: Test example_run.sh
run: |
# alias to a call launching the syri entrypoint from python
# necessary, as the hacky git install does not install the CLI entrypoints
alias syri='python <(echo "import syri.scripts.syri;syri.scripts.syri.main()")'
./example/example_workflow.sh
29 changes: 29 additions & 0 deletions .github/workflows/test_example.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Test example.sh

on:
push:
branches: [ "main", "dev" ]
pull_request:
branches: [ "main", "dev" ]

# Cancel if a newer run is started
# taken from https://github.com/nf-core/modules/blob/master/.github/workflows/nf-test.yml
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true


jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Build msyd
uses: ./.github/workflows/build.yml
with:
python-version: 3.12
- name: Test example_run.sh
run: |
# alias to a call launching the syri entrypoint from python
# necessary, as the hacky git install does not install the CLI entrypoints
alias syri='python <(echo "import syri.scripts.syri;syri.scripts.syri.main()")'
./example/example_workflow.sh

0 comments on commit c0d1852

Please sign in to comment.