138 lines (122 loc) · 3.93 KB
/
build-aarch64.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
name: Build ARM64 wheel
on:
push:
branches:
- main
tags:
- '**'
pull_request:
branches:
- '**'
jobs:
build_wheels:
name: Build wheel on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ARM64]
steps:
- name: Cancel previous runs on the same branch
if: ${{ github.ref != 'refs/heads/main' }}
uses: styfle/cancel-workflow-action@0.7.0
with:
access_token: ${{ github.token }}
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Prepare cibuildwheel
run: |
if [ ! -f "venv" ]; then rm -rf venv; fi
sudo apt-get install python3-venv python3-pip -y
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
python -m pip install cibuildwheel==2.2.2
- name: Lint source with flake8
run: |
source venv/bin/activate
pip install flake8
flake8 src setup.py python-bindings python-impl
- name: Lint source with mypy
run: |
source venv/bin/activate
pip install mypy
mypy --config-file mypi.ini python-bindings python-impl
- name: Build wheels and test
run: |
source venv/bin/activate
python -m cibuildwheel --output-dir dist
env:
CIBW_BUILD: cp37-* cp38-* cp39-* cp310-*
CIBW_SKIP: '*-musllinux_*'
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014
CIBW_BUILD_VERBOSITY_LINUX: 0
CIBW_BEFORE_BUILD_LINUX: >
python -m pip install --upgrade pip
CIBW_BEFORE_ALL_LINUX: >
yum -y install epel-release
&& yum -y install lzip
&& curl -L https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1-linux-aarch64.sh > cmake.sh
&& yes | sh cmake.sh | cat
&& rm -f /usr/bin/cmake && hash -r
&& which cmake
&& cmake --version
&& curl -L https://gmplib.org/download/gmp/gmp-6.2.1.tar.lz | lzip -dc | tar x
&& cd gmp-6.2.1 && ./configure --enable-fat
&& make && make install && cd .. && rm -rf gmp-6.2.1
CIBW_TEST_REQUIRES: pytest
CIBW_TEST_COMMAND: pytest -v {project}/python-bindings/test.py
- name: Create sha256 wheel hashes
run: |
mkdir hashes
cd ./dist
shasum -a 256 *
shasum -a 256 * > ../hashes/blspy-arm64-wheels-sha256.txt
- name: Upload hashes
uses: actions/upload-artifact@v2
with:
name: blspy-arm64-hashes
path: ./hashes
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: wheels
path: ./dist
- name: Test for secrets access
id: check_secrets
shell: bash
run: |
unset HAS_SECRET
if [ -n "$SECRET" ]; then HAS_SECRET='true' ; fi
echo ::set-output name=HAS_SECRET::${HAS_SECRET}
env:
SECRET: "${{ secrets.test_pypi_password }}"
- name: Install twine
run: |
source venv/bin/activate
pip install twine
- name: Publish distribution to PyPI
if: startsWith(github.event.ref, 'refs/tags') && steps.check_secrets.outputs.HAS_SECRET
env:
TWINE_USERNAME: __token__
TWINE_NON_INTERACTIVE: 1
TWINE_PASSWORD: ${{ secrets.pypi_password }}
run: |
source venv/bin/activate
twine upload --non-interactive --skip-existing --verbose 'dist/*'
- name: Publish distribution to Test PyPI
if: steps.check_secrets.outputs.HAS_SECRET
env:
TWINE_REPOSITORY_URL: https://test.pypi.org/legacy/
TWINE_USERNAME: __token__
TWINE_NON_INTERACTIVE: 1
TWINE_PASSWORD: ${{ secrets.test_pypi_password }}
run: |
source venv/bin/activate
twine upload --non-interactive --skip-existing --verbose 'dist/*'
- name: Clean up
run: |
rm -rf venv
rm -rf dist