-
-
Notifications
You must be signed in to change notification settings - Fork 835
130 lines (111 loc) · 3.32 KB
/
build.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
name: Build artifacts
on:
workflow_dispatch:
inputs:
tag:
default: ''
push:
branches:
- master
pull_request:
release:
types: [published] # releases and pre-releases (release candidates)
defaults:
run:
shell: bash
jobs:
unix-build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
# the binary will not work for users with an older libc than what
# is available on the ubuntu that the binary was built with.
# therefore, use the oldest available ubuntu.
- ubuntu-22.04
- macos-latest
steps:
- uses: actions/checkout@v4
with:
# grab the commit passed in via `tag`, if any
ref: ${{ github.event.inputs.tag }}
# need to fetch unshallow so that setuptools_scm can infer the version
fetch-depth: 0
# debug
- name: Git shorthash
run: git rev-parse --short HEAD
- name: Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
- name: Generate Binary
run: >-
pip install --no-binary pycryptodome --no-binary cbor2 . &&
pip install pyinstaller &&
make freeze
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: vyper-${{ runner.os }}
path: dist/vyper.*
windows-build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
# grab the commit passed in via `tag`, if any
ref: ${{ github.event.inputs.tag }}
# need to fetch unshallow so that setuptools_scm can infer the version
fetch-depth: 0
# debug
- name: Git shorthash
run: git rev-parse --short HEAD
- name: Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
- name: Generate Binary
run: >-
pip install . &&
pip install pyinstaller &&
./make.cmd freeze
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: vyper-${{ runner.os }}
path: dist/vyper.*
publish-release-assets:
needs: [windows-build, unix-build]
if: ${{ github.event_name == 'release' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: artifacts/
merge-multiple: true
- name: Upload assets
working-directory: artifacts
run: |
set -Eeuxo pipefail
for BIN_NAME in $(ls)
do
curl -L \
--no-progress-meter \
-X POST \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\
-H "Content-Type: application/octet-stream" \
"https://uploads.github.com/repos/${{ github.repository }}/releases/${{ github.event.release.id }}/assets?name=${BIN_NAME/+/%2B}" \
--data-binary "@${BIN_NAME}"
done
# check build success for pull requests
build-success:
if: always()
runs-on: ubuntu-latest
needs: [windows-build, unix-build]
steps:
- name: check that all builds succeeded
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1