-
Notifications
You must be signed in to change notification settings - Fork 0
100 lines (94 loc) · 3.06 KB
/
Copy pathrelease.yml
File metadata and controls
100 lines (94 loc) · 3.06 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
name: Release
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
build:
name: Build binary (${{ matrix.os }})
strategy:
matrix:
include:
- os: ubuntu-latest
artifact_name: acorn-linux-amd64
- os: macos-latest
artifact_name: acorn-macos-arm64
- os: macos-13
artifact_name: acorn-macos-amd64
- os: windows-latest
artifact_name: acorn-windows-amd64.exe
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install dependencies
run: |
pip install pyinstaller
pip install -e ".[network,advanced]"
- name: Build with PyInstaller
shell: bash
run: |
pyinstaller --onefile --name acorn \
--add-data "src/acorn/templates:acorn/templates" \
--add-data "src/acorn/detectors:acorn/detectors" \
--add-data "src/acorn/locales:acorn/locales" \
--hidden-import acorn.json_output \
--hidden-import acorn.analysis.health \
--hidden-import acorn.analysis.health_rules \
--hidden-import acorn.analysis.insights \
--hidden-import acorn.commands.doctor \
--hidden-import acorn.commands.fix \
--hidden-import acorn.generators.builtin \
src/acorn/cli.py
- name: Smoke test
shell: bash
env:
PYTHONIOENCODING: utf-8
run: |
if [[ "${{ matrix.os }}" == windows-latest ]]; then
./dist/acorn.exe --help
else
./dist/acorn --help
fi
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact_name }}
path: dist/acorn*
release:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
pattern: acorn-*
merge-multiple: true
- name: Generate Homebrew formula
shell: bash
run: |
VERSION="${GITHUB_REF_NAME#v}"
ARM64_SHA=$(sha256sum acorn-macos-arm64 | cut -d' ' -f1)
AMD64_SHA=$(sha256sum acorn-macos-amd64 | cut -d' ' -f1)
LINUX_SHA=$(sha256sum acorn-linux-amd64 | cut -d' ' -f1)
WINDOWS_SHA=$(sha256sum acorn-windows-amd64.exe | cut -d' ' -f1)
sed -e "s/REPLACE_ME_ARM64/$ARM64_SHA/g" \
-e "s/REPLACE_ME_AMD64/$AMD64_SHA/g" \
-e "s/REPLACE_ME_LINUX/$LINUX_SHA/g" \
-e "s/REPLACE_ME_WINDOWS/$WINDOWS_SHA/g" \
-e "s/version \"[0-9.]*\"/version \"$VERSION\"/g" \
Formula/acorn.rb > acorn.rb
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
acorn-linux-amd64
acorn-macos-arm64
acorn-macos-amd64
acorn-windows-amd64.exe
acorn.rb
generate_release_notes: true