Skip to content

Commit

Permalink
reusable workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
kozlov721 committed Dec 19, 2023
1 parent 0ba2d9a commit 2478024
Show file tree
Hide file tree
Showing 8 changed files with 239 additions and 66 deletions.
14 changes: 0 additions & 14 deletions .github/actions/luxonis-ml-style/Dockerfile

This file was deleted.

5 changes: 0 additions & 5 deletions .github/actions/luxonis-ml-style/action.yaml

This file was deleted.

6 changes: 0 additions & 6 deletions .github/actions/luxonis-ml-style/entrypoint.sh

This file was deleted.

30 changes: 0 additions & 30 deletions .github/actions/luxonis-ml-style/pre-commit-config.yaml

This file was deleted.

11 changes: 11 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: CI

on: [push]

jobs:
call-reusable-workflow:
uses: luxonis/luxonis-ml/.github/workflows/luxonis-ml-ci.yaml@feature/custom-pre-commit-hooks
with:
os: 'ubuntu-latest, macos-latest'
python_version: '3.8, 3.9'
src_dir: 'src/luxonis_ml'
114 changes: 114 additions & 0 deletions .github/workflows/luxonis-ml-ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: pre-commit

on:
workflow_call:
inputs:
python:
required: true
type: string
description: "Python version to use for the virtual environment"
os:
required: false
type: string
description: "Operating system versions to run tests on"
default: "ubuntu-latest"
src_dir:
required: true
type: string
description: "Source directory to monitor for coverage report"


jobs:
setup:
runs-on: ubuntu-latest
outputs:
os-matrix: ${{ steps.set-matrix.outputs.os-matrix }}
os-default: ${{ steps.set-matrix.outputs.os-default }}
python-matrix: ${{ steps.set-matrix.outputs.python-matrix }}
python-default: ${{ steps.set-matrix.outputs.python-default }}
steps:
- id: set-matrix
run: |
os_list=$(echo "${{ inputs.os }}" | jq -R -s -c 'split(",")')
python_list=$(echo "${{ inputs.python_version }}" | jq -R -s -c 'split(",")')
echo "os-matrix=$os_list" >> $GITHUB_ENV
echo "python-matrix=$python_list" >> $GITHUB_ENV
# Extract the first element as default
os_default=$(echo $os_list | jq -r '.[0]')
python_default=$(echo $python_list | jq -r '.[0]')
echo "::set-output name=os-matrix::$os_list"
echo "::set-output name=os-default::$os_default"
echo "::set-output name=python-matrix::$python_list"
echo "::set-output name=python-default::$python_default"
pre-commit:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}

- uses: pre-commit/[email protected]

tests:
needs: setup
strategy:
matrix:
os: ${{ fromJson(needs.setup.outputs.os-matrix) }}
python-version: ${{ fromJson(needs.setup.outputs.python-matrix) }}

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

steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}

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

- name: Install package
run: pip install -e .[dev]

- name: Run pytest
uses: pavelzw/pytest-action@v2
with:
emoji: false
custom-arguments: --cov ${{ github.event.inputs.src_dir }}

- name: Generate coverage badge
uses: tj-actions/coverage-badge-py@v2
if: matrix.os == ${{ needs.setup.outputs.os-default }} && matrix.python-version == ${{ needs.setup.outputs.python-default }}
with:
output: media/coverage_badge.svg

- name: Generate coverage report
uses: orgoro/[email protected]
if: matrix.os == ${{ needs.setup.outputs.os-default }} && matrix.python-version == ${{ needs.setup.outputs.python-default }}
with:
coverageFile: coverage.xml
token: ${{ secrets.GITHUB_TOKEN }}

- name: Commit coverage badge
if: matrix.os == ${{ needs.setup.outputs.os-default }} && matrix.python-version == ${{ needs.setup.outputs.python-default }}
run: |
git config --global user.name 'GitHub Actions'
git config --global user.email '[email protected]'
git diff --quiet media/coverage_badge.svg || {
git add media/coverage_badge.svg
git commit -m "[Automated] Updated coverage badge"
}
- name: Push changes
uses: ad-m/github-push-action@master
if: matrix.os == ${{ needs.setup.outputs.os-default }} && matrix.python-version == ${{ needs.setup.outputs.python-default }}
with:
branch: ${{ github.head_ref }}
11 changes: 0 additions & 11 deletions .github/workflows/luxonis-ml-style.yaml

This file was deleted.

114 changes: 114 additions & 0 deletions .github/workflows/pre-commit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: luxonis-ml-ci

on:
workflow_call:
inputs:
python:
required: true
type: string
description: "Python version to use for the virtual environment"
os:
required: false
type: string
description: "Operating system versions to run tests on"
default: "ubuntu-latest"
src_dir:
required: true
type: string
description: "Source directory to monitor for coverage report"


jobs:
setup:
runs-on: ubuntu-latest
outputs:
os-matrix: ${{ steps.set-matrix.outputs.os-matrix }}
os-default: ${{ steps.set-matrix.outputs.os-default }}
python-matrix: ${{ steps.set-matrix.outputs.python-matrix }}
python-default: ${{ steps.set-matrix.outputs.python-default }}
steps:
- id: set-matrix
run: |
os_list=$(echo "${{ inputs.os }}" | jq -R -s -c 'split(",")')
python_list=$(echo "${{ inputs.python_version }}" | jq -R -s -c 'split(",")')
echo "os-matrix=$os_list" >> $GITHUB_ENV
echo "python-matrix=$python_list" >> $GITHUB_ENV
# Extract the first element as default
os_default=$(echo $os_list | jq -r '.[0]')
python_default=$(echo $python_list | jq -r '.[0]')
echo "::set-output name=os-matrix::$os_list"
echo "::set-output name=os-default::$os_default"
echo "::set-output name=python-matrix::$python_list"
echo "::set-output name=python-default::$python_default"
pre-commit:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}

- uses: pre-commit/[email protected]

tests:
needs: setup
strategy:
matrix:
os: ${{ fromJson(needs.setup.outputs.os-matrix) }}
python-version: ${{ fromJson(needs.setup.outputs.python-matrix) }}

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

steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}

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

- name: Install package
run: pip install -e .[dev]

- name: Run pytest
uses: pavelzw/pytest-action@v2
with:
emoji: false
custom-arguments: --cov ${{ github.event.inputs.src_dir }}

- name: Generate coverage badge
uses: tj-actions/coverage-badge-py@v2
if: matrix.os == ${{ needs.setup.outputs.os-default }} && matrix.python-version == ${{ needs.setup.outputs.python-default }}
with:
output: media/coverage_badge.svg

- name: Generate coverage report
uses: orgoro/[email protected]
if: matrix.os == ${{ needs.setup.outputs.os-default }} && matrix.python-version == ${{ needs.setup.outputs.python-default }}
with:
coverageFile: coverage.xml
token: ${{ secrets.GITHUB_TOKEN }}

- name: Commit coverage badge
if: matrix.os == ${{ needs.setup.outputs.os-default }} && matrix.python-version == ${{ needs.setup.outputs.python-default }}
run: |
git config --global user.name 'GitHub Actions'
git config --global user.email '[email protected]'
git diff --quiet media/coverage_badge.svg || {
git add media/coverage_badge.svg
git commit -m "[Automated] Updated coverage badge"
}
- name: Push changes
uses: ad-m/github-push-action@master
if: matrix.os == ${{ needs.setup.outputs.os-default }} && matrix.python-version == ${{ needs.setup.outputs.python-default }}
with:
branch: ${{ github.head_ref }}

0 comments on commit 2478024

Please sign in to comment.