feat(ads/seo/release): v1.2.0 with live Google Ads, isolated ad profile, ads.txt, and SEO/AEO/GEO optimization

This commit is contained in:
Yun Chan 2026-09-14 00:39:44 +09:00
parent a88aafa1e5
commit 0e568f1f0a
975 changed files with 130593 additions and 16783 deletions

View file

@ -16,7 +16,7 @@ env:
DOTNET_CLI_TELEMETRY_OPTOUT: "true"
# 릴리스 자산은 공개 배포 저장소로 업로드한다(소스 저장소는 비공개라 익명 다운로드 불가).
# draft 상태는 익명에게 보이지 않으므로 QA 후 수동 Publish 흐름은 그대로다.
RELEASE_REPO: "Video-Downloader/releases"
RELEASE_REPO: "Paca/releases"
jobs:
# ── 관문: 전 플랫폼 빌드 전에 단위+E2E 통과 ──
@ -39,7 +39,7 @@ jobs:
- name: 환경 정보
run: dotnet --list-sdks
- name: dotnet test
run: dotnet test VideoDownloader.Tests -c Release
run: dotnet test tests/Paca.Tests -c Release
# ── Windows 설치자 (x64 / arm64 교차 publish + Inno Setup) ──
windows:
@ -74,7 +74,7 @@ jobs:
run: ./build/publish.ps1 -Config Release -Version $env:APP_VERSION
- name: 릴리스 업로드
env: { RELEASE_TOKEN: "${{ secrets.RELEASE_TOKEN }}" }
run: ./build/ci/upload-release-asset.ps1 -Tag $env:RELTAG -Files out/MediaBrowser-Setup-x64.exe, out/MediaBrowser-Setup-arm64.exe
run: ./build/ci/upload-release-asset.ps1 -Tag $env:RELTAG -Files out/Paca-Setup-x64.exe, out/Paca-Setup-arm64.exe
# ── Android APK (키스토어 시크릿 없으면 디버그 서명 APK) ──
android:
@ -120,16 +120,16 @@ jobs:
} else { Write-Host "ANDROID_KEYSTORE 시크릿 없음 — 디버그 서명 APK 생성" }
# RID 는 CLI 전역 속성이 아니라 csproj 게이트(CiPackArm64Only)로 좁힌다 — 전역 -p:RuntimeIdentifiers 는
# 참조 프로젝트(net8.0 Mobile.Core)까지 전파돼 MSB3030 으로 깨진다(2026-08-17 리허설 실증)
dotnet publish VideoDownloader.Mobile -f net10.0-android -c Release `
dotnet publish src/Paca.Mobile -f net10.0-android -c Release `
-p:AndroidPackageFormat=apk -p:CiPackArm64Only=true @sign -o out/android
if ($LASTEXITCODE -ne 0) { throw "publish 실패" }
$apk = Get-ChildItem out/android/*-Signed.apk | Select-Object -First 1
if (-not $apk) { $apk = Get-ChildItem out/android/*.apk | Select-Object -First 1 }
if (-not $apk) { throw "APK 산출물 없음" }
Copy-Item $apk.FullName "out/MediaBrowser-$env:APP_VERSION-arm64.apk"
Copy-Item $apk.FullName "out/Paca-$env:APP_VERSION-arm64.apk"
- name: 릴리스 업로드
env: { RELEASE_TOKEN: "${{ secrets.RELEASE_TOKEN }}" }
run: ./build/ci/upload-release-asset.ps1 -Tag $env:RELTAG -Files "out/MediaBrowser-$env:APP_VERSION-arm64.apk"
run: ./build/ci/upload-release-asset.ps1 -Tag $env:RELTAG -Files "out/Paca-$env:APP_VERSION-arm64.apk"
# ── Linux 셸 (tar.gz self-contained — Cli + Avalonia, x64 네이티브 + arm64 교차) ──
linux:
@ -161,13 +161,13 @@ jobs:
run: |
dotnet --list-sdks
for rid in linux-x64 linux-arm64; do
dotnet publish VideoDownloader.Cli -c Release -r "$rid" --self-contained -o "out/cli-$rid"
dotnet publish VideoDownloader.Avalonia -c Release -r "$rid" --self-contained -o "out/avalonia-$rid"
tar -C out -czf "out/mediabrowser-$rid.tar.gz" "cli-$rid" "avalonia-$rid"
dotnet publish src/Paca.Cli -c Release -r "$rid" --self-contained -o "out/cli-$rid"
dotnet publish src/Paca.Avalonia -c Release -r "$rid" --self-contained -o "out/avalonia-$rid"
tar -C out -czf "out/Paca-$rid.tar.gz" "cli-$rid" "avalonia-$rid"
done
- name: 릴리스 업로드
env: { RELEASE_TOKEN: "${{ secrets.RELEASE_TOKEN }}" }
run: ./build/ci/upload-release-asset.sh "$RELTAG" out/mediabrowser-linux-x64.tar.gz out/mediabrowser-linux-arm64.tar.gz
run: ./build/ci/upload-release-asset.sh "$RELTAG" out/Paca-linux-x64.tar.gz out/Paca-linux-arm64.tar.gz
# ── macOS 셸 (tar.gz — arm64 네이티브 + x64 교차. 서명·공증은 D4, Apple Developer Program 후) ──
macos:
@ -199,10 +199,10 @@ jobs:
run: |
dotnet --list-sdks
for rid in osx-arm64 osx-x64; do
dotnet publish VideoDownloader.Cli -c Release -r "$rid" --self-contained -o "out/cli-$rid"
dotnet publish VideoDownloader.Avalonia -c Release -r "$rid" --self-contained -o "out/avalonia-$rid"
tar -C out -czf "out/mediabrowser-$rid.tar.gz" "cli-$rid" "avalonia-$rid"
dotnet publish src/Paca.Cli -c Release -r "$rid" --self-contained -o "out/cli-$rid"
dotnet publish src/Paca.Avalonia -c Release -r "$rid" --self-contained -o "out/avalonia-$rid"
tar -C out -czf "out/Paca-$rid.tar.gz" "cli-$rid" "avalonia-$rid"
done
- name: 릴리스 업로드
env: { RELEASE_TOKEN: "${{ secrets.RELEASE_TOKEN }}" }
run: ./build/ci/upload-release-asset.sh "$RELTAG" out/mediabrowser-osx-arm64.tar.gz out/mediabrowser-osx-x64.tar.gz
run: ./build/ci/upload-release-asset.sh "$RELTAG" out/Paca-osx-arm64.tar.gz out/Paca-osx-x64.tar.gz