Skip to content

Commit 96d7c8a

Browse files
zahin tapadarzahin tapadar
authored andcommitted
github workflow
1 parent 2d0bf7a commit 96d7c8a

File tree

10 files changed

+442
-4
lines changed

10 files changed

+442
-4
lines changed

.github/dependabot.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: 2
2+
updates:
3+
# Enable version updates for npm (package.json)
4+
- package-ecosystem: "npm"
5+
directory: "/"
6+
schedule:
7+
interval: "weekly"
8+
open-pull-requests-limit: 10
9+
reviewers:
10+
- "@me"
11+
assignees:
12+
- "@me"
13+
14+
# Enable version updates for Cargo (Rust dependencies)
15+
- package-ecosystem: "cargo"
16+
directory: "/src-tauri"
17+
schedule:
18+
interval: "weekly"
19+
open-pull-requests-limit: 10
20+
reviewers:
21+
- "@me"
22+
assignees:
23+
- "@me"
24+
25+
# Enable version updates for GitHub Actions
26+
- package-ecosystem: "github-actions"
27+
directory: "/"
28+
schedule:
29+
interval: "weekly"
30+
open-pull-requests-limit: 5
31+
reviewers:
32+
- "@me"
33+
assignees:
34+
- "@me"
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
name: Build and Test
2+
3+
on:
4+
push:
5+
branches: [main, develop]
6+
pull_request:
7+
branches: [main, develop]
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
12+
jobs:
13+
test-frontend:
14+
runs-on: ubuntu-latest
15+
name: Test Frontend
16+
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@v4
20+
21+
- name: Setup pnpm
22+
uses: pnpm/action-setup@v3
23+
with:
24+
version: latest
25+
26+
- name: Setup Node.js
27+
uses: actions/setup-node@v4
28+
with:
29+
node-version: '20'
30+
cache: 'pnpm'
31+
32+
- name: Install frontend dependencies
33+
run: pnpm install
34+
35+
- name: Lint frontend
36+
run: pnpm run lint
37+
38+
- name: Build frontend
39+
run: pnpm run build
40+
41+
test-tauri:
42+
runs-on: ubuntu-latest
43+
name: Test Tauri Backend
44+
45+
steps:
46+
- name: Checkout repository
47+
uses: actions/checkout@v4
48+
49+
- name: Setup Rust
50+
uses: dtolnay/rust-toolchain@stable
51+
52+
- name: Rust cache
53+
uses: swatinem/rust-cache@v2
54+
with:
55+
workspaces: './src-tauri -> target'
56+
57+
- name: Install system dependencies (Ubuntu)
58+
run: |
59+
sudo apt-get update
60+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
61+
62+
- name: Check Rust formatting
63+
run: cd src-tauri && cargo fmt --all -- --check
64+
65+
- name: Check Rust code with Clippy
66+
run: cd src-tauri && cargo clippy -- -D warnings
67+
68+
- name: Test Rust code
69+
run: cd src-tauri && cargo test
70+
71+
build-tauri:
72+
needs: [test-frontend, test-tauri]
73+
permissions:
74+
contents: write
75+
strategy:
76+
fail-fast: false
77+
matrix:
78+
include:
79+
- platform: 'macos-latest' # for Arm based macs (M1 and above).
80+
args: '--target aarch64-apple-darwin'
81+
- platform: 'macos-latest' # for Intel based macs.
82+
args: '--target x86_64-apple-darwin'
83+
- platform: 'ubuntu-22.04'
84+
args: ''
85+
- platform: 'windows-latest'
86+
args: ''
87+
88+
runs-on: ${{ matrix.platform }}
89+
steps:
90+
- name: Checkout repository
91+
uses: actions/checkout@v4
92+
93+
- name: Setup pnpm
94+
uses: pnpm/action-setup@v3
95+
with:
96+
version: latest
97+
98+
- name: Setup Node.js
99+
uses: actions/setup-node@v4
100+
with:
101+
node-version: '20'
102+
cache: 'pnpm'
103+
104+
- name: Setup Rust
105+
uses: dtolnay/rust-toolchain@stable
106+
with:
107+
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
108+
109+
- name: Rust cache
110+
uses: swatinem/rust-cache@v2
111+
with:
112+
workspaces: './src-tauri -> target'
113+
114+
- name: Install dependencies (ubuntu only)
115+
if: matrix.platform == 'ubuntu-22.04'
116+
run: |
117+
sudo apt-get update
118+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
119+
120+
- name: Install frontend dependencies
121+
run: pnpm install
122+
123+
- name: Build the app
124+
uses: tauri-apps/tauri-action@v0
125+
env:
126+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
127+
with:
128+
args: ${{ matrix.args }}

.github/workflows/build.yml

Whitespace-only changes.

.github/workflows/ci.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, develop]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
check:
11+
runs-on: ubuntu-latest
12+
name: Quick Check
13+
14+
steps:
15+
- name: Checkout repository
16+
uses: actions/checkout@v4
17+
18+
- name: Setup pnpm
19+
uses: pnpm/action-setup@v3
20+
with:
21+
version: latest
22+
23+
- name: Setup Node.js
24+
uses: actions/setup-node@v4
25+
with:
26+
node-version: '20'
27+
cache: 'pnpm'
28+
29+
- name: Setup Rust
30+
uses: dtolnay/rust-toolchain@stable
31+
32+
- name: Rust cache
33+
uses: swatinem/rust-cache@v2
34+
with:
35+
workspaces: './src-tauri -> target'
36+
37+
- name: Install system dependencies
38+
run: |
39+
sudo apt-get update
40+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
41+
42+
- name: Install frontend dependencies
43+
run: pnpm install
44+
45+
- name: Lint frontend
46+
run: pnpm run lint
47+
48+
- name: Check Rust formatting
49+
run: cd src-tauri && cargo fmt --all -- --check
50+
51+
- name: Check Rust code with Clippy
52+
run: cd src-tauri && cargo clippy -- -D warnings
53+
54+
- name: Build frontend
55+
run: pnpm run build
56+
57+
- name: Check Rust build
58+
run: cd src-tauri && cargo check

.github/workflows/release.yml

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*.*.*'
7+
8+
env:
9+
CARGO_TERM_COLOR: always
10+
11+
jobs:
12+
create-release:
13+
permissions:
14+
contents: write
15+
runs-on: ubuntu-latest
16+
outputs:
17+
release_id: ${{ steps.create-release.outputs.result }}
18+
19+
steps:
20+
- name: Checkout repository
21+
uses: actions/checkout@v4
22+
23+
- name: Setup Node.js
24+
uses: actions/setup-node@v4
25+
with:
26+
node-version: '20'
27+
28+
- name: Get version
29+
run: echo "PACKAGE_VERSION=$(node -pe "require('./package.json').version")" >> $GITHUB_ENV
30+
31+
- name: Create release
32+
id: create-release
33+
uses: actions/github-script@v7
34+
with:
35+
script: |
36+
const { data } = await github.rest.repos.createRelease({
37+
owner: context.repo.owner,
38+
repo: context.repo.repo,
39+
tag_name: `v${process.env.PACKAGE_VERSION}`,
40+
name: `BeautifyOllama v${process.env.PACKAGE_VERSION}`,
41+
body: 'Take a look at the assets to download and install this app.',
42+
draft: true,
43+
prerelease: false
44+
})
45+
return data.id
46+
47+
build-tauri:
48+
needs: create-release
49+
permissions:
50+
contents: write
51+
strategy:
52+
fail-fast: false
53+
matrix:
54+
include:
55+
- platform: 'macos-latest' # for Arm based macs (M1 and above).
56+
args: '--target aarch64-apple-darwin'
57+
- platform: 'macos-latest' # for Intel based macs.
58+
args: '--target x86_64-apple-darwin'
59+
- platform: 'ubuntu-22.04'
60+
args: ''
61+
- platform: 'windows-latest'
62+
args: ''
63+
64+
runs-on: ${{ matrix.platform }}
65+
steps:
66+
- name: Checkout repository
67+
uses: actions/checkout@v4
68+
69+
- name: Setup pnpm
70+
uses: pnpm/action-setup@v3
71+
with:
72+
version: latest
73+
74+
- name: Setup Node.js
75+
uses: actions/setup-node@v4
76+
with:
77+
node-version: '20'
78+
cache: 'pnpm'
79+
80+
- name: Setup Rust
81+
uses: dtolnay/rust-toolchain@stable
82+
with:
83+
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
84+
85+
- name: Rust cache
86+
uses: swatinem/rust-cache@v2
87+
with:
88+
workspaces: './src-tauri -> target'
89+
90+
- name: Install dependencies (ubuntu only)
91+
if: matrix.platform == 'ubuntu-22.04'
92+
run: |
93+
sudo apt-get update
94+
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
95+
96+
- name: Install frontend dependencies
97+
run: pnpm install
98+
99+
- name: Build the app
100+
uses: tauri-apps/tauri-action@v0
101+
env:
102+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
103+
with:
104+
releaseId: ${{ needs.create-release.outputs.release_id }}
105+
args: ${{ matrix.args }}
106+
107+
publish-release:
108+
permissions:
109+
contents: write
110+
runs-on: ubuntu-latest
111+
needs: [create-release, build-tauri]
112+
113+
steps:
114+
- name: Publish release
115+
id: publish-release
116+
uses: actions/github-script@v7
117+
env:
118+
release_id: ${{ needs.create-release.outputs.release_id }}
119+
with:
120+
script: |
121+
github.rest.repos.updateRelease({
122+
owner: context.repo.owner,
123+
repo: context.repo.repo,
124+
release_id: process.env.release_id,
125+
draft: false,
126+
prerelease: false
127+
})

0 commit comments

Comments
 (0)