Skip to content

Merge branch 'main' of https://github.com/openMetadataInitiative/open… #5

Merge branch 'main' of https://github.com/openMetadataInitiative/open…

Merge branch 'main' of https://github.com/openMetadataInitiative/open… #5

Workflow file for this run

# Test openMINDS MATLAB Toolbox across all supported releases of MATLAB, package toolbox, create release
# Adapted from: https://github.com/mathworks/climatedatastore/blob/main/.github/workflows/release.yml
name: MATLAB Release
# Run workflow when a tag is created
on:
push:
tags:
- 'v*'
jobs:
# This workflow contains:
# 1. a matrixed test job run across a bunch of releases of MATLAB
# 2. a reporting job that summarizes the tests, and updates release badge
test:
strategy:
fail-fast: false
matrix:
MATLABVersion: [R2022b, R2023a, R2023b, R2024a, R2024b]
# The type of runner that the job will run on
runs-on: ubuntu-latest
steps:
# Checks-out the repository under $GITHUB_WORKSPACE, so the job can access it
- uses: actions/checkout@v4
- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2
with:
release: ${{ matrix.MATLABVersion }}
# Runs all tests in the project. Put results in a version specific subdirectory
- name: Run tests
uses: matlab-actions/run-command@v2
with:
command: addpath(genpath("dev")), testToolbox('ReportSubdirectory',"${{ matrix.MATLABVersion }}")
# Upload code coverage information to Codecov
- name: Upload code coverage report to Codecov (https://app.codecov.io/gh/openMetadataInitiative/openMINDS_MATLAB)
uses: codecov/codecov-action@v4
if: always()
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: docs/reports/codecoverage.xml
env_vars: ${{ matrix.MATLABVersion }}
# Save the contents of the report directory from each release into an artifact.
- name: Save Report Directory
uses: actions/upload-artifact@v4
if: always()
with:
name: reports-${{ matrix.MATLABVersion }}
path: docs/reports
# Report on what releases tested successfully.
# Generate a draft release based on the tag
# Recreate the tag with the final version of JSON files
release:
needs: test
if: always()
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: refs/heads/main
- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2
# Copy all the reports down into the container
- uses: actions/download-artifact@v4
with:
pattern: reports-*
path: docs/reports
merge-multiple: true
# Generate the JSON for the releases tested badge
- name: Generate tested with badge
uses: matlab-actions/run-command@v2
with:
command: addpath(genpath("dev")), createTestedWithBadgeforToolbox("${{ github.ref_name }}")
# Publish test results from all the releases
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
junit_files: "docs/reports/*/test-results.xml"
# Package the MLTBX
- name: Package Toolbox
uses: matlab-actions/run-command@v2
with:
command: addpath(genpath("dev")), packageToolbox("specific","${{ github.ref_name }}")
# Define the versionNumber using underscores, as this is used in the MLTBX
- name: Set version number
id: set_version
run: |
versionNumber=$(echo "${{ github.ref_name }}" | sed 's/\./_/g')
echo "versionNumber=$versionNumber" >> $GITHUB_ENV
# Save the MLTBX.
- name: Save Packaged Toolbox
uses: actions/upload-artifact@v4
with:
name: openMINDS_MATLAB_${{ env.versionNumber }}.mltbx
path: releases/openMINDS_MATLAB_${{ env.versionNumber }}.mltbx
# Commit the JSON for the MATLAB releases badge and ToolboxPackaging.prj
- name: commit changed files
continue-on-error: true
run: |
git config user.name "${{ github.workflow }} by ${{ github.actor }}"
git config user.email "<>"
git status
git add code/Contents.m
git add .github/badges/${{ github.ref_name }}/tested_with.json
git commit -m "Final checkins for release ${{ github.ref_name }}"
git fetch
git push
# Retag the repo so that the updated files are included in the release tag
- name: update tag
if: always()
continue-on-error: true
run: |
git config user.name "${{ github.workflow }} by ${{ github.actor }}"
git config user.email "<>"
git tag -d "${{ github.ref_name }}"
git push --delete origin ${{ github.ref_name }}
git tag -m "Release ${{ github.ref_name }}" ${{ github.ref_name }}
git push --tag
# Create the release
- name: Create GitHub Release
uses: ncipollo/release-action@v1
with:
draft: true
artifacts: "releases/openMINDS_MATLAB_${{ env.versionNumber }}.mltbx"
generateReleaseNotes: true
body: "![MATLAB Versions Tested](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FopenMetadataInitiative%2FopenMINDS_MATLAB%2Fmain%2F.github%2Fbadges%2F${{ github.ref_name }}%2Ftested_with.json)"