Skip to content

Commit 1b0cbcf

Browse files
committed
Consolidates deployment workflows and improves build process
Introduces a unified deployment workflow for both stable and unstable branches, adds concurrency controls to prevent overlapping runs, and upgrades actions to latest versions. Standardizes Node version and caching, enhances artifact naming, and streamlines Tauri build and release steps. Improves release notifications and artifact upload logic for greater clarity and consistency.
1 parent 3357a38 commit 1b0cbcf

3 files changed

Lines changed: 268 additions & 13 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
name: Deploy
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- develop
8+
9+
concurrency:
10+
group: deploy-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
release:
15+
if: github.ref == 'refs/heads/master'
16+
runs-on: ubuntu-latest
17+
outputs:
18+
version: ${{ steps.package-version.outputs.current-version }}
19+
upload_url: ${{ steps.release.outputs.upload_url }}
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Fetch Current Package Version
25+
id: package-version
26+
uses: martinbeentjes/npm-get-version-action@v1.3.1
27+
28+
- name: Setup pnpm
29+
uses: pnpm/action-setup@v4
30+
31+
- name: Setup Node
32+
uses: actions/setup-node@v4
33+
with:
34+
node-version: 22
35+
cache: pnpm
36+
37+
- name: Install dependencies
38+
run: pnpm install --frozen-lockfile --strict-peer-dependencies
39+
40+
- name: Build
41+
run: pnpm run build
42+
43+
- name: Zip dist folder
44+
run: zip -r gamevault-frontend.zip dist
45+
46+
- name: Create Github Tag & Release
47+
id: release
48+
uses: CupOfTea696/gh-action-auto-release@v1.0.2
49+
env:
50+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
51+
52+
- name: Upload Release Artifact
53+
uses: actions/upload-release-asset@v1
54+
with:
55+
asset_path: gamevault-frontend.zip
56+
asset_name: gamevault-frontend.zip
57+
asset_content_type: application/zip
58+
upload_url: ${{ steps.release.outputs.upload_url }}
59+
env:
60+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
61+
62+
- name: Send Discord Notification
63+
uses: Ilshidur/action-discord@master
64+
env:
65+
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_BOT_WEBHOOK }}
66+
with:
67+
args: "<@&1128857090090340382> New Release: {{ EVENT_PAYLOAD.repository.full_name }} v${{ steps.package-version.outputs.current-version }} has been deployed. Here are the changes: https://github.com/{{ EVENT_PAYLOAD.repository.full_name }}/releases/tag/${{ steps.package-version.outputs.current-version }}"
68+
69+
tauri:
70+
name: Build Tauri (${{ matrix.platform }})
71+
needs: release
72+
if: ${{ !cancelled() && (needs.release.result == 'success' || needs.release.result == 'skipped') }}
73+
runs-on: ${{ matrix.os }}
74+
75+
strategy:
76+
fail-fast: false
77+
matrix:
78+
include:
79+
- os: ubuntu-latest
80+
platform: linux
81+
zip_name: gamevault-tauri-linux
82+
- os: windows-latest
83+
platform: windows
84+
zip_name: gamevault-tauri-windows
85+
- os: macos-latest
86+
platform: macos
87+
zip_name: gamevault-tauri-macos
88+
89+
env:
90+
ARTIFACT_NAME: ${{ github.ref == 'refs/heads/master' && format('{0}-v{1}.zip', matrix.zip_name, needs.release.outputs.version) || format('{0}.zip', matrix.zip_name) }}
91+
92+
steps:
93+
- name: Checkout
94+
uses: actions/checkout@v4
95+
96+
- name: Install Linux system dependencies
97+
if: matrix.os == 'ubuntu-latest'
98+
run: |
99+
sudo apt update
100+
sudo apt install -y \
101+
libwebkit2gtk-4.1-dev \
102+
libappindicator3-dev \
103+
librsvg2-dev \
104+
patchelf
105+
106+
- name: Setup Rust
107+
uses: dtolnay/rust-toolchain@stable
108+
109+
- name: Rust cache
110+
uses: swatinem/rust-cache@v2
111+
with:
112+
workspaces: src-tauri
113+
114+
- name: Setup pnpm
115+
uses: pnpm/action-setup@v4
116+
117+
- name: Setup Node
118+
uses: actions/setup-node@v4
119+
with:
120+
node-version: 22
121+
cache: pnpm
122+
123+
- name: Install dependencies
124+
run: pnpm install --frozen-lockfile --strict-peer-dependencies
125+
126+
- name: Build Tauri
127+
run: pnpm tauri build
128+
129+
- name: Zip bundle (Linux/macOS)
130+
if: matrix.os != 'windows-latest'
131+
run: |
132+
cd src-tauri/target/release/bundle
133+
zip -r "$ARTIFACT_NAME" .
134+
mv "$ARTIFACT_NAME" "$GITHUB_WORKSPACE/"
135+
136+
- name: Zip bundle (Windows)
137+
if: matrix.os == 'windows-latest'
138+
run: |
139+
cd src-tauri/target/release/bundle
140+
powershell Compress-Archive -Path * -DestinationPath "$env:GITHUB_WORKSPACE\$env:ARTIFACT_NAME"
141+
142+
- name: Upload Tauri artifact to release
143+
if: github.ref == 'refs/heads/master'
144+
uses: actions/upload-release-asset@v1
145+
with:
146+
asset_path: ${{ env.ARTIFACT_NAME }}
147+
asset_name: ${{ env.ARTIFACT_NAME }}
148+
asset_content_type: application/zip
149+
upload_url: ${{ needs.release.outputs.upload_url }}
150+
env:
151+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
152+
153+
- name: Upload to unstable release
154+
if: github.ref == 'refs/heads/develop'
155+
uses: svenstaro/upload-release-action@v2
156+
with:
157+
repo_token: ${{ secrets.GITHUB_TOKEN }}
158+
file: ${{ env.ARTIFACT_NAME }}
159+
asset_name: ${{ env.ARTIFACT_NAME }}
160+
tag: unstable
161+
overwrite: true
162+
prerelease: true

.github/workflows/deployment-develop.yml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ on:
55
branches:
66
- develop
77

8+
concurrency:
9+
group: deploy-develop-${{ github.ref }}
10+
cancel-in-progress: true
11+
812
jobs:
913
tauri:
1014
name: Build Tauri (${{ matrix.platform }})
@@ -26,9 +30,8 @@ jobs:
2630

2731
steps:
2832
- name: Checkout
29-
uses: actions/checkout@v3
33+
uses: actions/checkout@v4
3034

31-
# Linux system deps
3235
- name: Install Linux system dependencies
3336
if: matrix.os == 'ubuntu-latest'
3437
run: |
@@ -42,31 +45,33 @@ jobs:
4245
- name: Setup Rust
4346
uses: dtolnay/rust-toolchain@stable
4447

48+
- name: Rust cache
49+
uses: swatinem/rust-cache@v2
50+
with:
51+
workspaces: src-tauri
52+
4553
- name: Setup pnpm
4654
uses: pnpm/action-setup@v4
47-
with:
48-
version: latest
4955

5056
- name: Setup Node
5157
uses: actions/setup-node@v4
5258
with:
53-
node-version: 20
59+
node-version: 22
60+
cache: pnpm
5461

5562
- name: Install dependencies
5663
run: pnpm install --frozen-lockfile --strict-peer-dependencies
5764

5865
- name: Build Tauri
5966
run: pnpm tauri build
6067

61-
# Zip for Linux & macOS
6268
- name: Zip bundle (Linux/macOS)
6369
if: matrix.os != 'windows-latest'
6470
run: |
6571
cd src-tauri/target/release/bundle
6672
zip -r ${{ matrix.zip_name }} .
6773
mv ${{ matrix.zip_name }} $GITHUB_WORKSPACE/
6874
69-
# Zip for Windows
7075
- name: Zip bundle (Windows)
7176
if: matrix.os == 'windows-latest'
7277
run: |

.github/workflows/deployment-master.yml

Lines changed: 94 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,32 @@ on:
55
branches:
66
- master
77

8+
concurrency:
9+
group: deploy-master-${{ github.ref }}
10+
cancel-in-progress: true
11+
812
jobs:
9-
deploy:
13+
release:
1014
runs-on: ubuntu-latest
15+
outputs:
16+
version: ${{ steps.package-version.outputs.current-version }}
17+
upload_url: ${{ steps.release.outputs.upload_url }}
1118
steps:
1219
- name: Checkout
13-
uses: actions/checkout@v3
20+
uses: actions/checkout@v4
1421

1522
- name: Fetch Current Package Version
1623
id: package-version
1724
uses: martinbeentjes/npm-get-version-action@v1.3.1
1825

1926
- name: Setup pnpm
2027
uses: pnpm/action-setup@v4
28+
29+
- name: Setup Node
30+
uses: actions/setup-node@v4
2131
with:
22-
version: latest
32+
node-version: 22
33+
cache: pnpm
2334

2435
- name: Install dependencies
2536
run: pnpm install --frozen-lockfile --strict-peer-dependencies
@@ -28,8 +39,7 @@ jobs:
2839
run: pnpm run build
2940

3041
- name: Zip dist folder
31-
run: |
32-
zip -r gamevault-frontend.zip dist
42+
run: zip -r gamevault-frontend.zip dist
3343

3444
- name: Create Github Tag & Release
3545
id: release
@@ -38,7 +48,6 @@ jobs:
3848
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3949

4050
- name: Upload Release Artifact
41-
id: upload
4251
uses: actions/upload-release-asset@v1
4352
with:
4453
asset_path: gamevault-frontend.zip
@@ -54,3 +63,82 @@ jobs:
5463
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_BOT_WEBHOOK }}
5564
with:
5665
args: "<@&1128857090090340382> New Release: {{ EVENT_PAYLOAD.repository.full_name }} v${{ steps.package-version.outputs.current-version }} has been deployed. Here are the changes: https://github.com/{{ EVENT_PAYLOAD.repository.full_name }}/releases/tag/${{ steps.package-version.outputs.current-version }}"
66+
67+
tauri:
68+
name: Build Tauri (${{ matrix.platform }})
69+
needs: release
70+
runs-on: ${{ matrix.os }}
71+
72+
strategy:
73+
fail-fast: false
74+
matrix:
75+
include:
76+
- os: ubuntu-latest
77+
platform: linux
78+
zip_name: gamevault-tauri-linux
79+
- os: windows-latest
80+
platform: windows
81+
zip_name: gamevault-tauri-windows
82+
- os: macos-latest
83+
platform: macos
84+
zip_name: gamevault-tauri-macos
85+
86+
steps:
87+
- name: Checkout
88+
uses: actions/checkout@v4
89+
90+
- name: Install Linux system dependencies
91+
if: matrix.os == 'ubuntu-latest'
92+
run: |
93+
sudo apt update
94+
sudo apt install -y \
95+
libwebkit2gtk-4.1-dev \
96+
libappindicator3-dev \
97+
librsvg2-dev \
98+
patchelf
99+
100+
- name: Setup Rust
101+
uses: dtolnay/rust-toolchain@stable
102+
103+
- name: Rust cache
104+
uses: swatinem/rust-cache@v2
105+
with:
106+
workspaces: src-tauri
107+
108+
- name: Setup pnpm
109+
uses: pnpm/action-setup@v4
110+
111+
- name: Setup Node
112+
uses: actions/setup-node@v4
113+
with:
114+
node-version: 22
115+
cache: pnpm
116+
117+
- name: Install dependencies
118+
run: pnpm install --frozen-lockfile --strict-peer-dependencies
119+
120+
- name: Build Tauri
121+
run: pnpm tauri build
122+
123+
- name: Zip bundle (Linux/macOS)
124+
if: matrix.os != 'windows-latest'
125+
run: |
126+
cd src-tauri/target/release/bundle
127+
zip -r ${{ matrix.zip_name }}-v${{ needs.release.outputs.version }}.zip .
128+
mv ${{ matrix.zip_name }}-v${{ needs.release.outputs.version }}.zip $GITHUB_WORKSPACE/
129+
130+
- name: Zip bundle (Windows)
131+
if: matrix.os == 'windows-latest'
132+
run: |
133+
cd src-tauri/target/release/bundle
134+
powershell Compress-Archive -Path * -DestinationPath $env:GITHUB_WORKSPACE\${{ matrix.zip_name }}-v${{ needs.release.outputs.version }}.zip
135+
136+
- name: Upload Tauri artifact to release
137+
uses: actions/upload-release-asset@v1
138+
with:
139+
asset_path: ${{ matrix.zip_name }}-v${{ needs.release.outputs.version }}.zip
140+
asset_name: ${{ matrix.zip_name }}-v${{ needs.release.outputs.version }}.zip
141+
asset_content_type: application/zip
142+
upload_url: ${{ needs.release.outputs.upload_url }}
143+
env:
144+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)