forked from DiamondLightSource/pythonSoftIOC
-
Notifications
You must be signed in to change notification settings - Fork 0
134 lines (111 loc) · 3.93 KB
/
Copy pathcode.yml
File metadata and controls
134 lines (111 loc) · 3.93 KB
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
name: Code CI
on:
push:
pull_request:
jobs:
lint:
runs-on: "ubuntu-latest"
steps:
- name: Checkout Source
uses: actions/checkout@v2
- name: Install Python
uses: actions/setup-python@v2
with:
python-version: "3.7"
- name: Install Python Dependencies
run: pip install flake8
- name: Lint
run: flake8
build:
name: build/${{ matrix.os }}/${{ matrix.python }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python: [cp27, cp37, cp38, cp39]
exclude:
- os: windows-latest
# No cothread or asyncio so doesn't work
python: cp27
include:
- os: ubuntu-latest
# Put coverage in the output dir mounted in docker
cov_file: /output/coverage.xml
test_requires: cothread pytest-asyncio aioca
# Build an sdist here so it has the right line endings
sdist: true
- os: windows-latest
cov_file: "{project}/dist/coverage.xml"
# cothread doesn't work on windows
test_requires: pytest-asyncio aioca
- os: macos-latest
cov_file: "{project}/dist/coverage.xml"
test_requires: cothread pytest-asyncio aioca
- os: ubuntu-latest
python: cp27
# asyncio doesn't work on Python2.7
test_requires: cothread
- os: macos-latest
python: cp27
# asyncio doesn't work on Python2.7
test_requires: cothread
steps:
- name: Checkout Source
uses: actions/checkout@v2
with:
submodules: true
- name: Install Python
uses: actions/setup-python@v2
with:
python-version: "3.7"
- name: Install Python Dependencies
run: pip install build cibuildwheel==1.* # The 2.* releases dropped Python2 support.
- name: Build Sdist
if: matrix.sdist
run: python -m build --sdist .
- name: Build Wheel
run: cibuildwheel --output-dir dist
env:
CIBW_BUILD: ${{ matrix.python }}*64
CIBW_TEST_REQUIRES: pytest-cov p4p ${{ matrix.test_requires }}
CIBW_TEST_COMMAND: pytest --cov=softioc {project}/tests --cov-report xml:${{ matrix.cov_file }}
# Disable auditwheel as it isn't compatible with setuptools_dso approach
# https://github.com/mdavidsaver/setuptools_dso/issues/17
CIBW_REPAIR_WHEEL_COMMAND: ""
CIBW_MANYLINUX_X86_64_IMAGE: manylinux1
CIBW_ENVIRONMENT_LINUX: SETUPTOOLS_DSO_PLAT_NAME=manylinux1_x86_64
- name: Upload Wheel and Sdist
uses: actions/upload-artifact@v2
with:
name: dist
path: dist/softioc*
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
name: ${{ matrix.os }}/${{ matrix.python }}
directory: dist
release:
needs: [build]
runs-on: ubuntu-latest
# upload to PyPI and make a release on every tag
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
steps:
- uses: actions/download-artifact@v2
with:
name: dist
path: dist
- name: Github Release
# We pin to the SHA, not the tag, for security reasons.
# https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
uses: softprops/action-gh-release@2d72d869af3bf23602f9593a1e3fd739b80ac1eb # v0.1.12
with:
files: dist/*
body: See [Changelog](CHANGELOG.rst) for more details
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to PyPI
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.pypi_token }}
run: pipx run twine upload dist/*