Skip to content

Commit

Permalink
Add GitHub Actions CI builds
Browse files Browse the repository at this point in the history
Resolves #180

**Why this change was necessary**
Travis doesn't offer great support for macOS and is also beginning to
charge for macOS build minutes.

**What this change does**
 - Factors the Travis CI build config into a shell script
 - Calls that shell script in a GitHub Actions Workflow
 - Adds a matrix build in the GH Actions Workflow for macOS 10.15
 Catalina and 11.0 Big Sur (on Apple Silicon), and Ubuntu 18, 20, and
 16
 - Adds a matrix build in the GH Actions Workflow for Python 3.7 and
 3.8
 - Adds a build status badge to the README

**Additional context/notes/links**
https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing
  • Loading branch information
jidicula committed Nov 29, 2020
1 parent 3680c9b commit a488dd1
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 1 deletion.
60 changes: 60 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: CI-Tests

on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches:
- master
pull_request:
branches:
- master
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- 'macos-10.15'
- 'macos-11.0'
- 'ubuntu-18.04'
- 'ubuntu-20.04'
- 'ubuntu-16.04'
python-version:
- '3.7'
- '3.8'

steps:
- uses: actions/checkout@v2

- name: Set XCode version
if: contains(matrix.os, 'macos-11.0')
run: sudo xcode-select -s "/Applications/Xcode_12.2.app"

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}

- name: Run CI script
run: ./ci.sh

# Generate LCOV for coveralls.io
- name: Coveralls Parallel
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
flag-name: run-${{ matrix.os }}-Python-${{ matrix.python-version }}
parallel: true
# Add test coverage stats to Coveralls.io
finish:
needs: test
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# shimming-toolbox

[![Build Status](https://travis-ci.com/shimming-toolbox/shimming-toolbox.svg?branch=master)](https://travis-ci.com/shimming-toolbox/shimming-toolbox) [![Documentation Status](https://readthedocs.org/projects/shimming-toolbox/badge/?version=latest)](https://www.shimming-toolbox.org/en/latest/?badge=latest) [![Coverage Status](https://coveralls.io/repos/github/shimming-toolbox/shimming-toolbox/badge.svg?branch=master)](https://coveralls.io/github/shimming-toolbox/shimming-toolbox?branch=master)
[![Build Status](https://github.com/shimming-toolbox/shimming-toolbox/actions?query=workflow%3A%22CI-Tests/badge.svg)](https://github.com/shimming-toolbox/shimming-toolbox/actions?query=workflow%3A%22CI-Tests) [![Build Status](https://travis-ci.com/shimming-toolbox/shimming-toolbox.svg?branch=master)](https://travis-ci.com/shimming-toolbox/shimming-toolbox) [![Documentation Status](https://readthedocs.org/projects/shimming-toolbox/badge/?version=latest)](https://www.shimming-toolbox.org/en/latest/?badge=latest) [![Coverage Status](https://coveralls.io/repos/github/shimming-toolbox/shimming-toolbox/badge.svg?branch=master)](https://coveralls.io/github/shimming-toolbox/shimming-toolbox?branch=master)


Code for performing real-time shimming using external MRI shim coils
Expand Down
29 changes: 29 additions & 0 deletions ci.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env bash

echo "Installation of dependencies"

# Install bleeding-edge dcm2niix
curl -JLO https://github.com/rordenlab/dcm2niix/releases/latest/download/dcm2niix_lnx.zip
unzip -o dcm2niix_lnx.zip
sudo install dcm2nii* /usr/bin/

echo "shimming-toolbox installation"
pip install .
pip install coveralls

# Tests
echo "Download prelude"
st_download_data prelude
echo "Set up prelude"
prelude_path="$(pwd)"/prelude
chmod 500 "${prelude_path}"/prelude
PATH=${prelude_path}:${PATH}
export PATH
FSLOUTPUTTYPE=NIFTI_GZ
export FSLOUTPUTTYPE
echo "Launch general integrity test"
py.test . -v --cov shimmingtoolbox/ --cov-report term-missing

# Fail if any .sh files have warnings
echo "Check Bash scripts"
if [[ -n "$(ls examples/*.sh)" ]]; then shellcheck examples/*.sh; fi

0 comments on commit a488dd1

Please sign in to comment.