4 Commits

Author SHA1 Message Date
Kareem Horstink 1c6848bb9e ci: add architecture suffix to binary names 2026-07-01 08:27:11 +00:00
Kareem Horstink ad7860161a chore: explicitly set Core project as Library output type 2026-07-01 08:17:32 +00:00
Kareem Horstink fa679e441e ci: add rolling draft release workflow 2026-07-01 08:07:35 +00:00
Kareem Horstink 8bd53587d1 add publish scripts (PowerShell + bash) for single-command cross-platform builds 2026-07-01 06:05:16 +00:00
4 changed files with 148 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
name: Build and Draft
on:
push:
branches: [main]
permissions:
contents: write
jobs:
build-and-draft:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
# ---- Build all 5 binaries (no version in filenames needed) ----
- name: Build CLI - Linux x64
run: |
dotnet publish ConvertSRTto3DASS.Cli \
-c Release -r linux-x64 --self-contained false \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true \
-o publish/linux-x64/
mv publish/linux-x64/ConvertSRTto3DASS publish/linux-x64/ConvertSRTto3DASS-cli-linux-x64
- name: Build CLI - macOS x64
run: |
dotnet publish ConvertSRTto3DASS.Cli \
-c Release -r osx-x64 --self-contained false \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true \
-o publish/osx-x64/
mv publish/osx-x64/ConvertSRTto3DASS publish/osx-x64/ConvertSRTto3DASS-cli-osx-x64
- name: Build CLI - macOS arm64
run: |
dotnet publish ConvertSRTto3DASS.Cli \
-c Release -r osx-arm64 --self-contained false \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true \
-o publish/osx-arm64/
mv publish/osx-arm64/ConvertSRTto3DASS publish/osx-arm64/ConvertSRTto3DASS-cli-osx-arm64
- name: Build CLI - Windows x64
run: |
dotnet publish ConvertSRTto3DASS.Cli \
-c Release -r win-x64 --self-contained false \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true \
-o publish/win-x64/
mv publish/win-x64/ConvertSRTto3DASS.exe publish/win-x64/ConvertSRTto3DASS-cli-win-x64.exe
- name: Build GUI - Windows x64
run: |
dotnet publish ConvertSRTto3DASS.Gui \
-c Release -r win-x64 --self-contained false \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true \
-p:EnableWindowsTargeting=true \
-o publish/gui-win-x64/
mv publish/gui-win-x64/ConvertSRTto3DASS.exe publish/gui-win-x64/ConvertSRTto3DASS-gui-win-x64.exe
# ---- Update (or create) the rolling draft release ----
- name: Update Rolling Draft Release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
tag: rolling-draft
name: "Draft (latest build)"
body: "Latest binaries from commit ${{ github.sha }}. Edit tag, name, and notes before publishing."
artifacts: |
publish/linux-x64/ConvertSRTto3DASS-cli-linux-x64
publish/osx-x64/ConvertSRTto3DASS-cli-osx-x64
publish/osx-arm64/ConvertSRTto3DASS-cli-osx-arm64
publish/win-x64/ConvertSRTto3DASS-cli-win-x64.exe
publish/gui-win-x64/ConvertSRTto3DASS-gui-win-x64.exe
@@ -1,6 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
+31
View File
@@ -0,0 +1,31 @@
# Publish all targets for SRTto3Dsubtitles
# Usage: ./publish.ps1
$ErrorActionPreference = "Stop"
$targets = @(
@{ Project = "ConvertSRTto3DASS.Cli"; Runtime = "linux-x64"; Name = "ConvertSRTto3DASS-linux-x64" },
@{ Project = "ConvertSRTto3DASS.Cli"; Runtime = "win-x64"; Name = "ConvertSRTto3DASS-win-x64.exe" },
@{ Project = "ConvertSRTto3DASS.Cli"; Runtime = "osx-x64"; Name = "ConvertSRTto3DASS-osx-x64" },
@{ Project = "ConvertSRTto3DASS.Cli"; Runtime = "osx-arm64"; Name = "ConvertSRTto3DASS-osx-arm64" },
@{ Project = "ConvertSRTto3DASS.Gui"; Runtime = "win-x64"; Name = "ConvertSRTto3DASS-GUI-Win-x64.exe" }
)
foreach ($t in $targets) {
Write-Host "Publishing $($t.Name)..." -ForegroundColor Cyan
dotnet publish $t.Project -c Release -r $t.Runtime `
--self-contained false `
-p:PublishSingleFile=true `
-p:IncludeNativeLibrariesForSelfExtract=true `
-p:OutputType=Exe `
-p:OutputPath="publish\$($t.Runtime)\"
$src = "publish\$($t.Runtime)\$($t.Project).exe"
$dst = "publish\$($t.Name)"
if (Test-Path $src) {
Move-Item $src $dst -Force
Write-Host " -> $dst" -ForegroundColor Green
}
}
Write-Host "`nDone! Published files in publish/`n" -ForegroundColor Green
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
# Publish all targets for SRTto3Dsubtitles
# Usage: ./publish.sh
set -e
declare -a targets=(
"ConvertSRTto3DASS.Cli:linux-x64:ConvertSRTto3DASS-linux-x64"
"ConvertSRTto3DASS.Cli:win-x64:ConvertSRTto3DASS-win-x64.exe"
"ConvertSRTto3DASS.Cli:osx-x64:ConvertSRTto3DASS-osx-x64"
"ConvertSRTto3DASS.Cli:osx-arm64:ConvertSRTto3DASS-osx-arm64"
"ConvertSRTto3DASS.Gui:win-x64:ConvertSRTto3DASS-GUI-Win-x64.exe"
)
rm -rf publish
mkdir -p publish
for entry in "${targets[@]}"; do
IFS=':' read -r project runtime name <<< "$entry"
echo "Publishing $name..."
dotnet publish "$project" -c Release -r "$runtime" \
--self-contained false \
-p:PublishSingleFile=true \
-p:IncludeNativeLibrariesForSelfExtract=true \
-p:OutputType=Exe \
-p:OutputPath="publish/$runtime/"
src="publish/$runtime/$project.exe"
dst="publish/$name"
if [ -f "$src" ]; then
mv "$src" "$dst"
echo " -> $dst"
fi
done
echo ""
echo "Done! Published files in publish/"