-
Notifications
You must be signed in to change notification settings - Fork 2
131 lines (110 loc) · 3.93 KB
/
Copy pathrelease.yml
File metadata and controls
131 lines (110 loc) · 3.93 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
name: Release
on:
push:
tags:
- 'v*.*.*'
workflow_dispatch:
inputs:
version:
description: 'Version to release (e.g., 1.0.0)'
required: true
type: string
env:
CARGO_TERM_COLOR: always
jobs:
test-and-build:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- platform: 'macos-latest'
args: '--target aarch64-apple-darwin'
- platform: 'macos-latest'
args: '--target x86_64-apple-darwin'
- platform: 'ubuntu-22.04'
args: ''
- platform: 'windows-latest'
args: ''
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: './src-tauri -> target'
- name: Install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install frontend dependencies
run: npm install
- name: Check Rust formatting (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
run: cd src-tauri && cargo fmt --all -- --check
- name: Check Rust code with Clippy (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
run: cd src-tauri && cargo clippy -- -D warnings
- name: Build the app
run: npm run tauri:build ${{ matrix.args }}
- name: Upload artifacts (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
uses: actions/upload-artifact@v4
with:
name: linux-artifacts
path: src-tauri/target/release/bundle/
- name: Upload artifacts (windows only)
if: matrix.platform == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: windows-artifacts
path: src-tauri/target/release/bundle/
- name: Upload artifacts (macos aarch64)
if: matrix.platform == 'macos-latest' && matrix.args == '--target aarch64-apple-darwin'
uses: actions/upload-artifact@v4
with:
name: macos-aarch64-artifacts
path: src-tauri/target/aarch64-apple-darwin/release/bundle/
- name: Upload artifacts (macos x86_64)
if: matrix.platform == 'macos-latest' && matrix.args == '--target x86_64-apple-darwin'
uses: actions/upload-artifact@v4
with:
name: macos-x86_64-artifacts
path: src-tauri/target/x86_64-apple-darwin/release/bundle/
create-release:
needs: test-and-build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Create the release
gh release create ${{ github.ref_name }} \
--title "BeautifyOllama ${{ github.ref_name }}" \
--notes "Download the appropriate installer for your platform:
- **Windows**: .msi or .exe file
- **macOS**: .dmg file (choose Intel or Apple Silicon)
- **Linux**: .deb or .AppImage file"
# Upload all artifacts
find artifacts -type f \( -name "*.msi" -o -name "*.exe" -o -name "*.dmg" -o -name "*.deb" -o -name "*.AppImage" \) -exec gh release upload ${{ github.ref_name }} {} \;