-
Notifications
You must be signed in to change notification settings - Fork 9
151 lines (125 loc) · 3.55 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
name: CI
on:
push:
branches:
- "*"
tags:
- v*
pull_request:
branches:
- "*"
jobs:
check-code-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dev tools
run: |
pip install --no-cache -e .[dev]
- name: Check code format with Black
run: |
black --check open_dubbing/ tests/
- name: Check code style with Flake8
if: ${{ always() }}
run: |
flake8 open_dubbing/ tests/
- name: Check code with isort
if: ${{ always() }}
run: |
isort --check-only open_dubbing/ tests/
run-tests:
environment: CI/CD
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: [3.10.15, 3.11, 3.12]
coqui: [coqui_yes, coqui_no] # Coqui pools different versions of transformers
exclude:
- os: macos-latest
python-version: 3.10.15
- os: windows-latest
python-version: 3.10.15
- coqui: coqui_yes
python-version: 3.10.15
- coqui: coqui_yes
python-version: 3.11
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies on Linux
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt update
sudo apt install -y ffmpeg espeak-ng
sudo apt-get clean
- name: Install dependencies on macOS
if: matrix.os == 'macos-latest'
run: |
sysctl -n machdep.cpu.brand_string
brew update
brew install ffmpeg espeak-ng
- name: Install dependencies on Windows
if: matrix.os == 'windows-latest'
run: |
choco install ffmpeg -y
- name: Install application with Coqui
if: matrix.coqui == 'coqui_yes'
run: |
pip install .[coqui]
- name: Install application without Coqui
if: matrix.coqui != 'coqui_yes'
run: |
pip install .
- name: Install dev packages
run: |
pip install pytest coverage
pip cache purge
- name: Run tests with coverage
run: |
coverage run --source=open_dubbing -m pytest tests/
coverage report
coverage xml
- name: Upload coverage report
uses: actions/upload-artifact@v3
with:
name: coverage-report
path: coverage.xml
- name: Report test coverage
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml
flags: unittests
name: codecov-coverage
fail_ci_if_error: false
- name: Run end-to-end test
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
run: |
make run-e2e-tests
build-and-push-package:
environment: CI/CD
runs-on: ubuntu-latest
needs: [check-code-format, run-tests]
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Install dependencies
run: |
pip install wheel twine setuptools
- name: Build package
run: |
python3 setup.py sdist bdist_wheel
- name: Push package on PyPI
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
env:
PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
make publish-release