@@ -5,7 +5,7 @@ name: OpenTimelineIO
55
66# for configuring which build will be a C++ coverage build / coverage report
77env :
8- GH_COV_PY : " 3.10 "
8+ GH_COV_PY : " 3.13 "
99 GH_COV_OS : ubuntu-latest
1010 GH_DEPENDABOT : dependabot
1111
@@ -88,24 +88,15 @@ jobs:
8888 cd ${{ env.OTIO_CONSUMER_TEST_BUILD_DIR }}
8989 cmake ${{ github.workspace }}/tests/consumer -DCMAKE_PREFIX_PATH=${{ env.OTIO_INSTALL_DIR }}
9090
91- py_build_test :
92- runs-on : ${{ matrix.os }}
91+ py_smoketest_build :
92+ runs-on : ${{ env.GH_COV_OS }}
9393 strategy :
9494 matrix :
95- os : [ubuntu-latest, windows-latest, macos-14, macos-latest]
9695 python-version : ["3.9", "3.10", "3.11", "3.12", "3.13"]
97- include :
98- - { os: ubuntu-latest, shell: bash }
99- - { os: macos-latest, shell: bash }
100- - { os: macos-14, shell: bash }
101- - { os: windows-latest, shell: pwsh }
102- - { os: windows-latest, shell: msys2, python-version: "mingw64" }
103- exclude :
104- - { os: macos-latest, python-version: 3.9 }
10596
10697 defaults :
10798 run :
108- shell : " ${{ matrix.shell }} {0}"
99+ shell : " bash {0}"
109100
110101 env :
111102 OTIO_CXX_COVERAGE_BUILD : ON
@@ -115,59 +106,41 @@ jobs:
115106 - uses : actions/checkout@v4
116107 with :
117108 submodules : " recursive"
118- - name : Set up MSYS2
119- if : matrix.python-version == 'mingw64'
120- uses : msys2/setup-msys2@v2
121- with :
122- msystem : mingw64
123- install : >-
124- mingw-w64-x86_64-python
125- mingw-w64-x86_64-python-pip
126- mingw-w64-x86_64-gcc
127- mingw-w64-x86_64-cmake
128- make
129- git
130109 - name : Set up Python ${{ matrix.python-version }}
131- if : matrix.python-version != 'mingw64'
132110133111 with :
134112 python-version : ${{ matrix.python-version }}
135113 - name : Install coverage dependency
136- if : matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
114+ if : matrix.python-version == env.GH_COV_PY && github.actor != env.GH_DEPENDABOT
137115 run : |
138116 echo 'OTIO_CXX_DEBUG_BUILD=1' >> $GITHUB_ENV
139117 sudo apt-get install lcov
140118 - name : Install python build dependencies
141119 run : |
142120 python -m pip install --upgrade pip setuptools wheel "flake8>=3.5" check-manifest
143- # \todo Temporarily disable check-manifest on MinGW, it is failing
144- # intermittently with this error:
145- # ModuleNotFoundError: No module named 'pip._vendor.distlib'
146121 - name : Run check-manifest and lint check
147- if : matrix.python-version != 'mingw64'
148122 run : make ci-prebuild
149123 - name : Build and Install
150124 run : |
151- pip install .[dev] -v --break-system-packages
125+ python -m pip install tests/requirements.txt -v --break-system-packages
152126 - name : Run tests w/ python coverage
153127 run : make ci-postbuild
154128 # (only on GH_COV_OS and GH_COV_PY)
155129 - name : Generate C++ coverage report
156- if : matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
130+ if : matrix.python-version == env.GH_COV_PY && github.actor != env.GH_DEPENDABOT
157131 run : make lcov
158132 - name : Upload coverage to Codecov
159- if : matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
160- uses : codecov/codecov-action@v4
133+ if : matrix.python-version == env.GH_COV_PY && github.actor != env.GH_DEPENDABOT
134+ uses : codecov/codecov-action@v5
161135 with :
162136 flags : py-unittests
163137 name : py-opentimelineio-codecov
164138 fail_ci_if_error : false
165- env :
166- # based on: https://github.com/codecov/codecov-action?tab=readme-ov-file#usage
167- CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
139+ token : ${{ secrets.CODECOV_TOKEN }}
140+ verbose : true
168141
169142 package_wheels :
170- needs : py_build_test
143+ needs : py_smoketest_build
171144 runs-on : ${{ matrix.os }}
172145 strategy :
173146 matrix :
@@ -200,8 +173,72 @@ jobs:
200173 name : wheel-${{ matrix.os }}-${{ matrix.python-build }}
201174 path : ./wheelhouse/*.whl
202175
176+ test_wheels :
177+ needs : package_wheels
178+ runs-on : ${{ matrix.os }}
179+ strategy :
180+ matrix :
181+ os : [ubuntu-latest, windows-latest, macos-14, macos-latest]
182+ python-version : ["3.9", "3.10", "3.11", "3.12", "3.13"]
183+ include :
184+ - { os: ubuntu-latest, shell: bash }
185+ - { os: macos-latest, shell: bash }
186+ - { os: macos-14, shell: bash }
187+ - { os: windows-latest, shell: pwsh }
188+ - { os: windows-latest, shell: msys2, python-version: "mingw64" }
189+ exclude :
190+ - { os: macos-latest, python-version: 3.9 }
191+
192+ defaults :
193+ run :
194+ shell : " ${{ matrix.shell }} {0}"
195+
196+ env :
197+ OTIO_CXX_COVERAGE_BUILD : ON
198+ OTIO_CXX_BUILD_TMP_DIR : ${{ github.workspace }}/build
199+
200+ steps :
201+ - uses : actions/checkout@v4
202+ with :
203+ submodules : " recursive"
204+ - name : Set up MSYS2
205+ if : matrix.python-version == 'mingw64'
206+ uses : msys2/setup-msys2@v2
207+ with :
208+ msystem : mingw64
209+ install : >-
210+ mingw-w64-x86_64-python
211+ mingw-w64-x86_64-python-pip
212+ mingw-w64-x86_64-gcc
213+ mingw-w64-x86_64-cmake
214+ make
215+ git
216+ - name : Set up Python ${{ matrix.python-version }}
217+ if : matrix.python-version != 'mingw64'
218+ 219+ with :
220+ python-version : ${{ matrix.python-version }}
221+ - name : Install python build dependencies
222+ run : |
223+ python -m pip install --upgrade pip setuptools wheel "flake8>=3.5" check-manifest && python -m pip install -r tests/requirements.txt
224+ # \todo Temporarily disable check-manifest on MinGW, it is failing
225+ # intermittently with this error:
226+ # ModuleNotFoundError: No module named 'pip._vendor.distlib'
227+ - name : Run check-manifest and lint check
228+ if : matrix.python-version != 'mingw64'
229+ run : make ci-prebuild
230+ - uses : actions/download-artifact@v5
231+ with :
232+ pattern : ' wheel-.*'
233+ path : ' wheelhouse'
234+ merge-multiple : true
235+ - name : Install wheel for environment
236+ run : pip install --no-index --find-links wheelhouse opentimelineio
237+ - name : Run tests w/ python coverage
238+ run : make ci-postbuild
239+
203240 package_sdist :
204- needs : py_build_test
241+ needs : py_smoketest_build
205242 runs-on : ubuntu-latest
206243 steps :
207244 - uses : actions/checkout@v4
0 commit comments