From 361c416916db98c41e52caca6fbe81d503b70cd3 Mon Sep 17 00:00:00 2001 From: Remi Gau Date: Sun, 18 Aug 2024 10:30:15 +0200 Subject: [PATCH 1/2] split system and unit tests for matlab linux and mac os --- .github/workflows/system_tests.yml | 114 +++++++++++++++++++++++++++++ .github/workflows/tests.yml | 52 ++----------- 2 files changed, 119 insertions(+), 47 deletions(-) create mode 100644 .github/workflows/system_tests.yml diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml new file mode 100644 index 00000000..9a1253d3 --- /dev/null +++ b/.github/workflows/system_tests.yml @@ -0,0 +1,114 @@ +--- +name: system tests matlab + +# Uses the cron schedule for github actions +# +# https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#scheduled-events +# +# ┌───────────── minute (0 - 59) +# │ ┌───────────── hour (0 - 23) +# │ │ ┌───────────── day of the month (1 - 31) +# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC) +# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT) +# │ │ │ │ │ +# │ │ │ │ │ +# │ │ │ │ │ +# * * * * * + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: [main] + pull_request: + branches: [main] + schedule: + - cron: 0 0 1,15 * * + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + + tests: + + if: github.repository_owner == 'cpp-lln-lab' + + strategy: + matrix: + script: [moae, facerep, fmriprep] + os: [ubuntu-latest, macos-13] + matlab: [R2023b] + include: + # only run bms on ubuntu because of datalad setup + - os: ubuntu-latest + matlab: R2023b + script: bms + fail-fast: false + + runs-on: ${{ matrix.os }} + + steps: + + - name: test ${{ matrix.script }} + run: test ${{ matrix.script }} + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get -y -qq update + sudo apt-get -y install unzip wget git-annex + python -m pip install --upgrade pip setuptools + pip install datalad + + - name: Clone bidspm + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Install validators + run: make install + + - name: Install SPM + run: | + git clone https://github.com/spm/spm12.git --depth 1 + + - name: Get moae fmriprep data from OSF + run: | + mkdir -p demos/MoAE/inputs/ + cd demos/MoAE/inputs/ + wget https://osf.io/vufjs/download + unzip download + mv moae_fmriprep fmriprep + + - name: Prepare test data unix + run: | + cd tests + make data + + - name: Get data for BMS + if: matrix.script == 'bms' + run: make -C demos/bayes data_ds000114 + + - name: Install MATLAB + uses: matlab-actions/setup-matlab@v2.2.0 + with: + release: ${{ matrix.matlab }} + + - name: Run system tests MATLAB ${{ matrix.script }} + uses: matlab-actions/run-command@v2.1.1 + with: + command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); run system_tests_${{ matrix.script }}; diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a6934940..860bd816 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,5 +1,5 @@ --- -name: tests matlab +name: unit tests matlab # Uses the cron schedule for github actions # @@ -27,7 +27,7 @@ on: schedule: - cron: 0 0 1,15 * * - # Allows you to run this workflow manually from the Actions tab + # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: @@ -38,46 +38,15 @@ jobs: strategy: matrix: - test_type: [system] - script: [moae, facerep, fmriprep] + mode: [fast, slow] os: [ubuntu-latest, macos-13] matlab: [R2023b] - include: - # only run bms on ubuntu because of datalad setup - - test_type: system - os: ubuntu-latest - matlab: R2023b - script: bms - - test_type: unit - os: ubuntu-latest - matlab: R2023b - mode: fast - - test_type: unit - os: macos-13 - matlab: R2023b - mode: fast - - test_type: unit - os: ubuntu-latest - matlab: R2023b - mode: slow - - test_type: unit - os: macos-13 - matlab: R2023b - mode: slow - - test_type: unit - os: macos-13 - matlab: R2023b - mode: fast fail-fast: false runs-on: ${{ matrix.os }} steps: - - name: ${{ matrix.test_type }} test - if: matrix.test_type == 'system' - run: echo ${{ matrix.test_type }} test ${{ matrix.script }} - - name: Install Node uses: actions/setup-node@v4 with: @@ -129,10 +98,6 @@ jobs: cd tests make data - - name: Get data for BMS - if: matrix.script == 'bms' - run: make -C demos/bayes data_ds000114 - - name: Install Moxunit and MOcov run: | git clone https://github.com/MOxUnit/MOxUnit.git --depth 1 @@ -144,19 +109,18 @@ jobs: release: ${{ matrix.matlab }} - name: Run fast unit tests MATLAB - if: matrix.test_type == 'unit' && matrix.mode == 'fast' + if: matrix.mode == 'fast' uses: matlab-actions/run-command@v2.1.1 with: command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); run tests_matlab; - name: Run slow unit tests MATLAB - if: matrix.test_type == 'unit' && matrix.mode == 'slow' + if: matrix.mode == 'slow' uses: matlab-actions/run-command@v2.1.1 with: command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); global SLOW; SLOW=true; run tests_matlab; - name: Code coverage matlab - if: matrix.test_type == 'unit' uses: codecov/codecov-action@v4 with: file: coverage.xml @@ -164,9 +128,3 @@ jobs: name: codecov-matlab fail_ci_if_error: false token: ${{ secrets.CODECOV_TOKEN }} - - - name: Run system tests MATLAB ${{ matrix.script }} - if: matrix.test_type == 'system' - uses: matlab-actions/run-command@v2.1.1 - with: - command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); run system_tests_${{ matrix.script }}; From d2f149a69502e9ea6ef1bb89db380cbb8f57d913 Mon Sep 17 00:00:00 2001 From: Remi Gau Date: Sun, 18 Aug 2024 10:51:32 +0200 Subject: [PATCH 2/2] move into a single workflow --- .github/workflows/system_tests.yml | 114 ------------------- .github/workflows/tests.yml | 176 ++++++++++++++++++++++++++++- 2 files changed, 170 insertions(+), 120 deletions(-) delete mode 100644 .github/workflows/system_tests.yml diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml deleted file mode 100644 index 9a1253d3..00000000 --- a/.github/workflows/system_tests.yml +++ /dev/null @@ -1,114 +0,0 @@ ---- -name: system tests matlab - -# Uses the cron schedule for github actions -# -# https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#scheduled-events -# -# ┌───────────── minute (0 - 59) -# │ ┌───────────── hour (0 - 23) -# │ │ ┌───────────── day of the month (1 - 31) -# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC) -# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT) -# │ │ │ │ │ -# │ │ │ │ │ -# │ │ │ │ │ -# * * * * * - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -on: - push: - branches: [main] - pull_request: - branches: [main] - schedule: - - cron: 0 0 1,15 * * - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - - tests: - - if: github.repository_owner == 'cpp-lln-lab' - - strategy: - matrix: - script: [moae, facerep, fmriprep] - os: [ubuntu-latest, macos-13] - matlab: [R2023b] - include: - # only run bms on ubuntu because of datalad setup - - os: ubuntu-latest - matlab: R2023b - script: bms - fail-fast: false - - runs-on: ${{ matrix.os }} - - steps: - - - name: test ${{ matrix.script }} - run: test ${{ matrix.script }} - - - name: Install Node - uses: actions/setup-node@v4 - with: - node-version: 18 - - - name: Install python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Install dependencies - if: matrix.os == 'ubuntu-latest' - run: | - sudo apt-get -y -qq update - sudo apt-get -y install unzip wget git-annex - python -m pip install --upgrade pip setuptools - pip install datalad - - - name: Clone bidspm - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - - - name: Install validators - run: make install - - - name: Install SPM - run: | - git clone https://github.com/spm/spm12.git --depth 1 - - - name: Get moae fmriprep data from OSF - run: | - mkdir -p demos/MoAE/inputs/ - cd demos/MoAE/inputs/ - wget https://osf.io/vufjs/download - unzip download - mv moae_fmriprep fmriprep - - - name: Prepare test data unix - run: | - cd tests - make data - - - name: Get data for BMS - if: matrix.script == 'bms' - run: make -C demos/bayes data_ds000114 - - - name: Install MATLAB - uses: matlab-actions/setup-matlab@v2.2.0 - with: - release: ${{ matrix.matlab }} - - - name: Run system tests MATLAB ${{ matrix.script }} - uses: matlab-actions/run-command@v2.1.1 - with: - command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); run system_tests_${{ matrix.script }}; diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 860bd816..fed1fd04 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,5 +1,5 @@ --- -name: unit tests matlab +name: tests matlab # Uses the cron schedule for github actions # @@ -32,13 +32,12 @@ on: jobs: - tests: + fast_tests: if: github.repository_owner == 'cpp-lln-lab' strategy: matrix: - mode: [fast, slow] os: [ubuntu-latest, macos-13] matlab: [R2023b] fail-fast: false @@ -109,13 +108,96 @@ jobs: release: ${{ matrix.matlab }} - name: Run fast unit tests MATLAB - if: matrix.mode == 'fast' uses: matlab-actions/run-command@v2.1.1 with: command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); run tests_matlab; + - name: Code coverage matlab + uses: codecov/codecov-action@v4 + with: + file: coverage.xml + flags: ${{ matrix.os }}_matlab-${{ matrix.matlab }}_fast + name: codecov-matlab + fail_ci_if_error: false + token: ${{ secrets.CODECOV_TOKEN }} + + slow_tests: + + needs: [fast_tests] + if: github.repository_owner == 'cpp-lln-lab' + + strategy: + matrix: + os: [ubuntu-latest, macos-13] + matlab: [R2023b] + fail-fast: false + + runs-on: ${{ matrix.os }} + + steps: + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get -y -qq update + sudo apt-get -y install unzip wget git-annex + python -m pip install --upgrade pip setuptools + pip install datalad + + - name: Clone bidspm + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Install validators + run: make install + + - name: Install SPM + run: | + git clone https://github.com/spm/spm12.git --depth 1 + + - name: Get moae fmriprep data from OSF + run: | + mkdir -p demos/MoAE/inputs/ + cd demos/MoAE/inputs/ + wget https://osf.io/vufjs/download + unzip download + mv moae_fmriprep fmriprep + + - name: Get data for testing QA + if: matrix.os == 'ubuntu-latest' + run: | + cd demos/openneuro/ + make data_ds000114_mriqc + make data_ds000114_fmriprep + + - name: Prepare test data unix + run: | + cd tests + make data + + - name: Install Moxunit and MOcov + run: | + git clone https://github.com/MOxUnit/MOxUnit.git --depth 1 + git clone https://github.com/MOcov/MOcov.git --depth 1 + + - name: Install MATLAB + uses: matlab-actions/setup-matlab@v2.2.0 + with: + release: ${{ matrix.matlab }} + - name: Run slow unit tests MATLAB - if: matrix.mode == 'slow' uses: matlab-actions/run-command@v2.1.1 with: command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); global SLOW; SLOW=true; run tests_matlab; @@ -124,7 +206,89 @@ jobs: uses: codecov/codecov-action@v4 with: file: coverage.xml - flags: ${{ matrix.os }}_matlab-${{ matrix.matlab }}_${{ matrix.mode }} + flags: ${{ matrix.os }}_matlab-${{ matrix.matlab }}_slow name: codecov-matlab fail_ci_if_error: false token: ${{ secrets.CODECOV_TOKEN }} + + system_tests: + + needs: [fast_tests] + if: github.repository_owner == 'cpp-lln-lab' + + strategy: + matrix: + script: [moae, facerep, fmriprep] + os: [ubuntu-latest, macos-13] + matlab: [R2023b] + include: + # only run bms on ubuntu because of datalad setup + - os: ubuntu-latest + matlab: R2023b + script: bms + fail-fast: false + + runs-on: ${{ matrix.os }} + + steps: + + - name: test ${{ matrix.script }} + run: test ${{ matrix.script }} + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get -y -qq update + sudo apt-get -y install unzip wget git-annex + python -m pip install --upgrade pip setuptools + pip install datalad + + - name: Clone bidspm + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Install validators + run: make install + + - name: Install SPM + run: | + git clone https://github.com/spm/spm12.git --depth 1 + + - name: Get moae fmriprep data from OSF + run: | + mkdir -p demos/MoAE/inputs/ + cd demos/MoAE/inputs/ + wget https://osf.io/vufjs/download + unzip download + mv moae_fmriprep fmriprep + + - name: Prepare test data unix + run: | + cd tests + make data + + - name: Get data for BMS + if: matrix.script == 'bms' + run: make -C demos/bayes data_ds000114 + + - name: Install MATLAB + uses: matlab-actions/setup-matlab@v2.2.0 + with: + release: ${{ matrix.matlab }} + + - name: Run system tests MATLAB ${{ matrix.script }} + uses: matlab-actions/run-command@v2.1.1 + with: + command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); run system_tests_${{ matrix.script }};