Skip to content

Commit

Permalink
[ENH] add pre-commit workflows (#44)
Browse files Browse the repository at this point in the history
* add pre-commit workflows

* Update .github/workflows/update_precommit_hooks.yml

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* change yml formatting

* cancel previous test runs

---------

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored Jul 10, 2024
1 parent e8449fe commit b625032
Show file tree
Hide file tree
Showing 11 changed files with 248 additions and 174 deletions.
8 changes: 4 additions & 4 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
103 changes: 54 additions & 49 deletions .github/workflows/matlab_test_and_coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,64 +11,69 @@ name: 'MATLAB: test and coverage'
# If tests pass, uploads coverage to codecov

on:
push:
branches: [main]
pull_request:
branches: ['*']
push:
branches: [main]
pull_request:
branches: ['*']

# cancel previous run on that branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
matlab_tests:
matlab_tests:

strategy:
matrix:
os: [ubuntu-latest, windows-latest]
version: [R2021a, R2023b]
include:
- os: macos-latest
version: R2023b
fail-fast: false # Don't cancel all jobs if one fails
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
version: [R2021a, R2023b]
include:
- os: macos-latest
version: R2023b
fail-fast: false # Don't cancel all jobs if one fails

runs-on: ${{ matrix.os }}
runs-on: ${{ matrix.os }}

steps:
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2.2.0
with:
release: ${{ matrix.version }}
steps:
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2.2.0
with:
release: ${{ matrix.version }}

- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 1
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 1

- 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 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: Run tests
uses: matlab-actions/run-command@v2.1.1
with:
command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); run run_tests_ci;
- name: Run tests
uses: matlab-actions/run-command@v2.1.1
with:
command: cd(fullfile(getenv('GITHUB_WORKSPACE'), '.github', 'workflows')); run run_tests_ci;

- name: Check logs unix
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
run: grep -q 0 test_report.log || { echo "Some tests failed. Check the 'Run tests' step to know which ones." >&2; exit 1; }
- name: Check logs windows
if: matrix.os == 'windows-latest'
run: |
if (-not (Get-Content test_report.log | Select-String -Pattern "0")) {
throw "Some tests failed. Check the 'Run tests' step to know which ones."
}
- name: Check logs unix
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
run: grep -q 0 test_report.log || { echo "Some tests failed. Check the 'Run tests' step to know which ones." >&2; exit 1; }
- name: Check logs windows
if: matrix.os == 'windows-latest'
run: |
if (-not (Get-Content test_report.log | Select-String -Pattern "0")) {
throw "Some tests failed. Check the 'Run tests' step to know which ones."
}
- name: Code coverage
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
- name: Code coverage
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
# no coverage on windows as long as MOcov does not support it
# see https://github.com/MOcov/MOcov/issues/28
uses: codecov/codecov-action@v4
with:
file: coverage.xml # optional
flags: ${{ matrix.os }}_matlab-${{ matrix.version }}
name: codecov-umbrella # optional
fail_ci_if_error: false # optional (default = false)
token: ${{ secrets.CODECOV_TOKEN }}
uses: codecov/codecov-action@v4
with:
file: coverage.xml # optional
flags: ${{ matrix.os }}_matlab-${{ matrix.version }}
name: codecov-umbrella # optional
fail_ci_if_error: false # optional (default = false)
token: ${{ secrets.CODECOV_TOKEN }}
57 changes: 31 additions & 26 deletions .github/workflows/octave_test_and_coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,39 @@
name: 'Octave: test and coverage'

on:
push:
branches: [main]
pull_request:
branches: ['*']
push:
branches: [main]
pull_request:
branches: ['*']

# cancel previous run on that branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 1
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 1

- name: MOxUnit Action
uses: joergbrech/moxunit-action@v1.3.0
with:
tests: tests
src: src
with_coverage: true
cover_xml_file: coverage.xml
- name: MOxUnit Action
uses: joergbrech/moxunit-action@v1.3.0
with:
tests: tests
src: src
with_coverage: true
cover_xml_file: coverage.xml

- name: Code coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
file: coverage.xml # optional
flags: octave # optional
name: codecov-umbrella # optional
fail_ci_if_error: false # optional (default = false)
- name: Code coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
file: coverage.xml # optional
flags: octave # optional
name: codecov-umbrella # optional
fail_ci_if_error: false # optional (default = false)
15 changes: 15 additions & 0 deletions .github/workflows/run_precommit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: pre-commit

on:
pull_request:
push:
branches: [main]

jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: pre-commit/action@v3.0.1
48 changes: 48 additions & 0 deletions .github/workflows/update_precommit_hooks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
name: Update precommit hooks


on:

# 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)
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ │
# * * * * *
schedule:
- cron: 0 0 * * 1

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
update_precommit_hooks:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install pre-commit
run: pip install pre-commit
- name: Update pre-commit hooks
run: pre-commit autoupdate
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
with:
commit-message: pre-commit hooks auto-update
base: main
token: ${{ secrets.GITHUB_TOKEN }}
delete-branch: true
title: '[BOT] update pre-commit hooks'
body: update pre-commit hooks
52 changes: 26 additions & 26 deletions .github/workflows/validate_cff.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,38 @@
name: validate CITATION.cff

on:
push:
branches: ['*']
paths:
- CITATION.cff
- .github/workflows/validate_cff.yml
pull_request:
branches: ['*']
paths:
- CITATION.cff
- .github/workflows/validate_cff.yml
push:
branches: ['*']
paths:
- CITATION.cff
- .github/workflows/validate_cff.yml
pull_request:
branches: ['*']
paths:
- CITATION.cff
- .github/workflows/validate_cff.yml

jobs:

validate_cff:
validate_cff:

runs-on: ubuntu-latest
runs-on: ubuntu-latest

steps:
steps:

- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools
pip3 install cffconvert
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools
pip3 install cffconvert
- name: Validate CITATION.cff
run: cffconvert --validate
- name: Validate CITATION.cff
run: cffconvert --validate
Loading

0 comments on commit b625032

Please sign in to comment.