-
Notifications
You must be signed in to change notification settings - Fork 287
144 lines (126 loc) · 4.53 KB
/
python-package.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
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: OpenTimelineIO
# for configuring which build will be a C++ coverage build / coverage report
env:
GH_COV_PY: 3.7
GH_COV_OS: ubuntu-20.04
GH_DEPENDABOT: dependabot
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
cpp_build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v2.3.5
with:
submodules: 'recursive'
- name: compile c++
run: |
mkdir build
mkdir test_otio_inst_dir
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=test_otio_inst_dir
cmake --build . --target install --config release
py_build_test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['2.7', '3.7', '3.8', '3.9']
env:
OTIO_CXX_COVERAGE_BUILD: ON
OTIO_CXX_BUILD_TMP_DIR: ${{ github.workspace }}/build
steps:
- uses: actions/checkout@v2.3.5
with:
submodules: 'recursive'
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2.2.2
with:
python-version: ${{ matrix.python-version }}
- name: Install coverage dependency
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
run: |
sudo apt-get install lcov
- name: Install python build dependencies
run: |
python -m pip install --upgrade pip setuptools wheel flake8>=3.5 check-manifest
- name: install mock for python 2.7 tests only
if: matrix.python-version == 2.7
run: python -m pip install --upgrade mock
- name: Run check-manifest and lint check
run: make ci-prebuild
- name: Build and Install
run: |
# compile and install into virtualenv/virtual machine (verbosely)
pip install .[dev] -v
- name: Run tests w/ python coverage
run: make ci-postbuild
# (only on ubuntu/pyhton3.7)
- name: Generate C++ coverage report
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
run: make lcov
- name: Upload coverage to Codecov
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
uses: codecov/codecov-action@v2.1.0
with:
flags: unittests
name: opentimelineio-codecov
fail_ci_if_error: true
package_wheels:
needs: py_build_test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-build: [cp27*, cp37*, cp38*, cp39*]
steps:
- uses: actions/checkout@v2.3.5
# cibuildwheel 1.12.0 gates Python 2.7 wheels builds
# by using two environment variables, DISTUTILS_USE_SDK and MSSdk.
# https://cibuildwheel.readthedocs.io/en/1.x/cpp_standards/#windows-and-python-27
# Note that normally these are used by setuptools/distutils, but in our case
# they are really just used for cibuildwheel as we don't use any of the
# setuptools/distutils build tools. Our builds are entirely handled
# by CMake. CMake is able to find the right toolchain, thanks to
# the -A argument that we specify in the setup.py to set the
# target platform (x86, x64, etc).
- name: Set Windows Python 2.7 environment variables
if: matrix.python-build == 'cp27*' && runner.os == 'Windows'
shell: bash
run: |
echo "DISTUTILS_USE_SDK=1" >> $GITHUB_ENV
echo "MSSdk=1" >> $GITHUB_ENV
- name: Build wheels
uses: pypa/cibuildwheel@v1.12.0
with:
output-dir: wheelhouse
env:
CIBW_BUILD: ${{ matrix.python-build }}
- uses: actions/upload-artifact@v2
with:
name: wheels
path: ./wheelhouse/*.whl
package_sdist:
needs: py_build_test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.5
with:
submodules: 'recursive'
- uses: actions/setup-python@v2
- name: Install pypa/build
run: python -m pip install build --user
- name: Generate sdist
run: python -m build -s .
- uses: actions/upload-artifact@v2
with:
name: sdist
path: dist