forked from danielbraun89/nanolayer
-
Notifications
You must be signed in to change notification settings - Fork 3
136 lines (106 loc) · 4.29 KB
/
release-binaries.yaml
File metadata and controls
136 lines (106 loc) · 4.29 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
135
136
name: Release Binaries
on:
workflow_dispatch:
inputs:
triple_target:
description: 'rust cargo triple target for pyoxidizer'
required: true
type: choice
options:
- "x86_64-unknown-linux-musl"
- "x86_64-unknown-linux-gnu"
- "aarch64-unknown-linux-gnu"
binary_name:
description: 'output binary name'
required: false
type: string
default: "nanolayer"
runner:
description: 'runner name'
required: false
type: string
default: "ubuntu-latest"
workflow_call:
inputs:
triple_target:
description: 'rust cargo triple target for pyoxidizer'
required: true
type: string
binary_name:
description: 'output binary name'
required: false
type: string
default: "nanolayer"
runner:
description: 'runner name'
required: false
type: string
default: "ubuntu-latest"
permissions:
contents: write
discussions: write
jobs:
release-publish:
env:
binary_name: nanolayer
runs-on: ${{ inputs.runner }} # assume python3 exists
steps:
- name: install latest git
# IMPORTANT: installation of latest git is needed for old runners (ubuntu18.04) to have a .git folder after the usage of actions/checkout@v3
# https://github.com/actions/checkout/issues/335
run: |
sudo apt-get install -y software-properties-common \
&& sudo apt-get update \
&& sudo add-apt-repository -y ppa:git-core/ppa \
&& sudo apt-get update \
&& sudo apt-get install -y git
- uses: actions/checkout@v3
with:
# IMPORTANT: a positive fetch-depth value is needed in order to ensure a .git folder under old ubuntu18.04 runners.
# A valid .git folder is required for setuptools-scm to resolve python package versions
fetch-depth: 0
- name: Setup python
# IMPORTANT: the ambigiuse setup_python action does not provide support for ARM runners
# A valid .git folder is required for setuptools-scm to resolve python package versions
run: |
git status
sudo apt-get update -y
sudo apt-get install -y git
sudo apt-get install -y python3-packaging
sudo apt-get install -y python3-dev python3-venv python3-pip
- name: Build package
run: |
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade build setuptools wheel setuptools-scm packaging
export SETUPTOOLS_SCM_DEBUG=1
python3 ./setup.py bdist_wheel
- name: Build Binary using Pyoxidizer
id: run_pyoxidizer
run: |
sudo apt-get install -y build-essential musl musl-dev musl-tools
sudo ld-musl-config
# NOTE: keep version at 0.23.0: https://github.com/indygreg/PyOxidizer/issues/673
python3 -m pip install pyoxidizer==0.23.0
oxidizer_location=$GITHUB_WORKSPACE
wheel_location=./dist/$(ls dist | grep .whl)
target_triple=${{ inputs.triple_target }}
binary_name=${{ inputs.binary_name }}
run_command="from nanolayer.__main__ import main; main()"
python_version="3.10"
pyoxidizer build exe \
--path $oxidizer_location \
--release \
--var wheel_location $wheel_location \
--var run_command "$run_command" \
--var python_version $python_version \
--var app_name $binary_name \
--target-triple $target_triple
pyoxidizer analyze "$oxidizer_location/build/$target_triple/release/exe/$binary_name"
strip $oxidizer_location/build/$target_triple/release/exe/$binary_name
( cd $oxidizer_location/build/$target_triple/release/exe && tar -zcvf $GITHUB_WORKSPACE/build/$binary_name-$target_triple.tgz "$binary_name" )
echo "binary_location=$GITHUB_WORKSPACE/build/$binary_name-$target_triple.tgz" >> "$GITHUB_OUTPUT"
- name: Create GH Release
uses: softprops/action-gh-release@v0.1.15
with:
files: |
${{ steps.run_pyoxidizer.outputs.binary_location }}