-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (120 loc) · 4.22 KB
/
release.yml
File metadata and controls
136 lines (120 loc) · 4.22 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
on:
push:
tags: ["v*"]
jobs:
create-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
draft: false
prerelease: false
cli-bundle:
runs-on: ubuntu-latest
needs: create-release
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Compute version
id: vars
run: |
echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
- name: Build CLI release zip
run: |
rm -rf release
mkdir -p release/ok_computer-cli
cp README.md LICENSE VERSION .env.example okc install_okc.sh release/ok_computer-cli/
cp -R src release/ok_computer-cli/src
cd release
zip -qr "ok_computer-cli-${{ steps.vars.outputs.tag }}.zip" ok_computer-cli
- name: Upload CLI zip to release
uses: softprops/action-gh-release@v2
with:
files: release/ok_computer-cli-${{ steps.vars.outputs.tag }}.zip
ui-bundle:
needs: create-release
permissions:
contents: write
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: macos-latest
asset_suffix: macos
- os: ubuntu-latest
asset_suffix: linux
- os: windows-latest
asset_suffix: windows
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install UI build dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r ui/requirements.txt -r ui/requirements.conf
- name: Compute version
id: vars
shell: bash
run: |
echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
- name: Build UI bundle
shell: bash
run: |
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then SEP=';'; else SEP=':'; fi
cd ui
ICON_ARGS=()
if [[ "${{ matrix.os }}" == "macos-latest" && -f "assets/logo.icns" ]]; then
ICON_ARGS=(--icon "assets/logo.icns")
fi
python -m PyInstaller --name ok_computer_ui --onedir --noconfirm --clean \
--noconsole \
"${ICON_ARGS[@]}" \
--add-data "../.env.example${SEP}." \
--add-data "templates${SEP}templates" \
--add-data "static${SEP}static" \
--add-data "../src${SEP}src" \
--collect-submodules flask \
--hidden-import socket \
--hidden-import webview \
--hidden-import webview.platforms.cocoa \
--hidden-import webview.platforms.winforms \
app.py
- name: Archive macOS app
if: matrix.os == 'macos-latest'
run: |
mkdir -p release staging
cp -R ui/dist/ok_computer_ui.app staging/
cp -R src staging/src
ditto -c -k --sequesterRsrc staging release/ok_computer-ui-${{ matrix.asset_suffix }}-${{ steps.vars.outputs.tag }}.zip
- name: Archive Linux bundle
if: matrix.os == 'ubuntu-latest'
run: |
mkdir -p release staging
cp -R ui/dist/ok_computer_ui staging/
cp -R src staging/src
cd staging
zip -qr ../release/ok_computer-ui-${{ matrix.asset_suffix }}-${{ steps.vars.outputs.tag }}.zip .
- name: Archive Windows bundle
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path release, staging | Out-Null
Copy-Item -Recurse ui/dist/ok_computer_ui staging/ok_computer_ui
Copy-Item -Recurse src staging/src
Compress-Archive -Path staging/* -DestinationPath release/ok_computer-ui-${{ matrix.asset_suffix }}-${{ steps.vars.outputs.tag }}.zip -Force
- name: Upload UI bundle to release
uses: softprops/action-gh-release@v2
with:
files: release/ok_computer-ui-${{ matrix.asset_suffix }}-${{ steps.vars.outputs.tag }}.zip