Skip to content

Commit 8d713c4

Browse files
committed
feat: add pre-release auto build workflow
1 parent 2c15856 commit 8d713c4

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
name: Pre-release Build
2+
3+
on:
4+
# Pre-release oluşturulduğunda veya düzenlendiğinde tetiklenir
5+
release:
6+
types: [prereleased, edited]
7+
8+
# Manuel tetikleme
9+
workflow_dispatch:
10+
inputs:
11+
release_tag:
12+
description: 'Pre-release tag (örn: v1.0.2-beta). Boş bırakılırsa en son pre-release kullanılır.'
13+
required: false
14+
type: string
15+
16+
permissions:
17+
contents: write
18+
19+
jobs:
20+
build:
21+
runs-on: windows-latest
22+
23+
steps:
24+
- name: Checkout repository
25+
uses: actions/checkout@v4
26+
27+
- name: Get release info
28+
id: release_info
29+
shell: pwsh
30+
env:
31+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32+
run: |
33+
if ("${{ github.event_name }}" -eq "release") {
34+
# Release event'inden gelen bilgileri kullan
35+
$tagName = "${{ github.event.release.tag_name }}"
36+
$releaseId = "${{ github.event.release.id }}"
37+
} elseif ("${{ github.event.inputs.release_tag }}" -ne "") {
38+
# Manuel girilen tag'i kullan
39+
$tagName = "${{ github.event.inputs.release_tag }}"
40+
$release = gh release view $tagName --json id,tagName | ConvertFrom-Json
41+
$releaseId = $release.id
42+
} else {
43+
# En son pre-release'i bul
44+
$releases = gh release list --json tagName,isPrerelease,isDraft | ConvertFrom-Json
45+
$prerelease = $releases | Where-Object { $_.isPrerelease -and -not $_.isDraft } | Select-Object -First 1
46+
if ($null -eq $prerelease) {
47+
Write-Error "Pre-release bulunamadı!"
48+
exit 1
49+
}
50+
$tagName = $prerelease.tagName
51+
$release = gh release view $tagName --json id | ConvertFrom-Json
52+
$releaseId = $release.id
53+
}
54+
55+
Write-Output "Tag: $tagName"
56+
Write-Output "Release ID: $releaseId"
57+
58+
echo "tag_name=$tagName" >> $env:GITHUB_OUTPUT
59+
echo "release_id=$releaseId" >> $env:GITHUB_OUTPUT
60+
61+
- name: Setup Node.js
62+
uses: actions/setup-node@v4
63+
with:
64+
node-version: 20
65+
cache: 'npm'
66+
cache-dependency-path: 'package-lock.json'
67+
68+
- name: Setup Rust
69+
uses: dtolnay/rust-toolchain@stable
70+
71+
- name: Rust cache
72+
uses: swatinem/rust-cache@v2
73+
with:
74+
workspaces: './src-tauri -> target'
75+
76+
- name: Install frontend dependencies
77+
run: npm ci
78+
79+
- name: Download yt-dlp
80+
shell: pwsh
81+
run: |
82+
New-Item -ItemType Directory -Force -Path "src-tauri/bin"
83+
Invoke-WebRequest -Uri "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe" -OutFile "src-tauri/bin/yt-dlp-x86_64-pc-windows-msvc.exe"
84+
85+
- name: Download FFmpeg
86+
shell: pwsh
87+
run: |
88+
Invoke-WebRequest -Uri "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip" -OutFile "ffmpeg.zip"
89+
Expand-Archive -Path "ffmpeg.zip" -DestinationPath "ffmpeg-temp"
90+
$ffmpegDir = Get-ChildItem -Path "ffmpeg-temp" -Directory | Select-Object -First 1
91+
Copy-Item "$($ffmpegDir.FullName)/bin/ffmpeg.exe" "src-tauri/bin/ffmpeg-x86_64-pc-windows-msvc.exe"
92+
Copy-Item "$($ffmpegDir.FullName)/bin/ffprobe.exe" "src-tauri/bin/ffprobe-x86_64-pc-windows-msvc.exe"
93+
Remove-Item -Recurse -Force "ffmpeg-temp", "ffmpeg.zip"
94+
95+
- name: Build Tauri app
96+
run: npm run tauri build
97+
98+
- name: Delete old assets from release
99+
shell: pwsh
100+
env:
101+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
102+
run: |
103+
$tagName = "${{ steps.release_info.outputs.tag_name }}"
104+
105+
# Mevcut asset'leri listele ve sil
106+
$assets = gh release view $tagName --json assets --jq '.assets[].name' 2>$null
107+
if ($assets) {
108+
foreach ($asset in $assets) {
109+
Write-Output "Siliniyor: $asset"
110+
gh release delete-asset $tagName $asset --yes
111+
}
112+
}
113+
114+
- name: Upload release assets
115+
shell: pwsh
116+
env:
117+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
118+
run: |
119+
$tagName = "${{ steps.release_info.outputs.tag_name }}"
120+
$bundlePath = "src-tauri/target/release/bundle"
121+
122+
# MSI dosyalarını yükle
123+
$msiFiles = Get-ChildItem -Path "$bundlePath/msi/*.msi" -ErrorAction SilentlyContinue
124+
foreach ($file in $msiFiles) {
125+
Write-Output "Yükleniyor: $($file.Name)"
126+
gh release upload $tagName $file.FullName --clobber
127+
}
128+
129+
# NSIS setup dosyalarını yükle
130+
$nsisFiles = Get-ChildItem -Path "$bundlePath/nsis/*.exe" -ErrorAction SilentlyContinue
131+
foreach ($file in $nsisFiles) {
132+
Write-Output "Yükleniyor: $($file.Name)"
133+
gh release upload $tagName $file.FullName --clobber
134+
}
135+
136+
Write-Output "Tüm dosyalar başarıyla yüklendi!"

0 commit comments

Comments
 (0)