-
Notifications
You must be signed in to change notification settings - Fork 0
143 lines (121 loc) · 5.05 KB
/
prerelease-build.yml
File metadata and controls
143 lines (121 loc) · 5.05 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
137
138
139
140
141
142
143
name: Pre-release Build
on:
# Main branch'e push yapıldığında tetiklenir
push:
branches: [main]
paths-ignore:
- '**.md'
- '.gitignore'
# Pre-release oluşturulduğunda veya düzenlendiğinde tetiklenir
release:
types: [prereleased, edited]
# Manuel tetikleme
workflow_dispatch:
inputs:
release_tag:
description: 'Pre-release tag (örn: v1.0.2-beta). Boş bırakılırsa en son pre-release kullanılır.'
required: false
type: string
permissions:
contents: write
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get release info
id: release_info
shell: pwsh
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if ("${{ github.event_name }}" -eq "release") {
# Release event'inden gelen bilgileri kullan
$tagName = "${{ github.event.release.tag_name }}"
$releaseId = "${{ github.event.release.id }}"
} elseif ("${{ github.event.inputs.release_tag }}" -ne "") {
# Manuel girilen tag'i kullan
$tagName = "${{ github.event.inputs.release_tag }}"
$release = gh release view $tagName --json id,tagName | ConvertFrom-Json
$releaseId = $release.id
} else {
# En son pre-release'i bul
$releases = gh release list --json tagName,isPrerelease,isDraft | ConvertFrom-Json
$prerelease = $releases | Where-Object { $_.isPrerelease -and -not $_.isDraft } | Select-Object -First 1
if ($null -eq $prerelease) {
Write-Error "Pre-release bulunamadı!"
exit 1
}
$tagName = $prerelease.tagName
$release = gh release view $tagName --json id | ConvertFrom-Json
$releaseId = $release.id
}
Write-Output "Tag: $tagName"
Write-Output "Release ID: $releaseId"
echo "tag_name=$tagName" >> $env:GITHUB_OUTPUT
echo "release_id=$releaseId" >> $env:GITHUB_OUTPUT
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: 'package-lock.json'
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: './src-tauri -> target'
- name: Install frontend dependencies
run: npm ci --legacy-peer-deps
- name: Download yt-dlp
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path "src-tauri/bin"
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"
- name: Download FFmpeg
shell: pwsh
run: |
Invoke-WebRequest -Uri "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip" -OutFile "ffmpeg.zip"
Expand-Archive -Path "ffmpeg.zip" -DestinationPath "ffmpeg-temp"
$ffmpegDir = Get-ChildItem -Path "ffmpeg-temp" -Directory | Select-Object -First 1
Copy-Item "$($ffmpegDir.FullName)/bin/ffmpeg.exe" "src-tauri/bin/ffmpeg-x86_64-pc-windows-msvc.exe"
Copy-Item "$($ffmpegDir.FullName)/bin/ffprobe.exe" "src-tauri/bin/ffprobe-x86_64-pc-windows-msvc.exe"
Remove-Item -Recurse -Force "ffmpeg-temp", "ffmpeg.zip"
- name: Build Tauri app
run: npm run tauri build
- name: Delete old assets from release
shell: pwsh
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
$tagName = "${{ steps.release_info.outputs.tag_name }}"
# Mevcut asset'leri listele ve sil
$assets = gh release view $tagName --json assets --jq '.assets[].name' 2>$null
if ($assets) {
foreach ($asset in $assets) {
Write-Output "Siliniyor: $asset"
gh release delete-asset $tagName $asset --yes
}
}
- name: Upload release assets
shell: pwsh
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
$tagName = "${{ steps.release_info.outputs.tag_name }}"
$bundlePath = "src-tauri/target/release/bundle"
# MSI dosyalarını yükle
$msiFiles = Get-ChildItem -Path "$bundlePath/msi/*.msi" -ErrorAction SilentlyContinue
foreach ($file in $msiFiles) {
Write-Output "Yükleniyor: $($file.Name)"
gh release upload $tagName $file.FullName --clobber
}
# NSIS setup dosyalarını yükle
$nsisFiles = Get-ChildItem -Path "$bundlePath/nsis/*.exe" -ErrorAction SilentlyContinue
foreach ($file in $nsisFiles) {
Write-Output "Yükleniyor: $($file.Name)"
gh release upload $tagName $file.FullName --clobber
}
Write-Output "Tüm dosyalar başarıyla yüklendi!"