1
0
Fork 0

chore(cicd): remove obsolete GitHub workflows, update ad links to git.chanpaca.net, and guard tests

This commit is contained in:
Yun Chan 2026-09-08 03:33:54 +09:00
parent d6b7ec2274
commit c607dff47d
5 changed files with 7 additions and 145 deletions

View file

@ -1,43 +0,0 @@
name: Build
on:
push:
branches: [master, main]
pull_request:
branches: [master, main]
permissions:
contents: read
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Restore + Build solution
shell: pwsh
run: |
dotnet build Everything2Everything.slnx -c Release --nologo
- name: Build MSIX
shell: pwsh
run: |
./packaging/GenerateAssets.ps1
./packaging/BuildMsix.ps1 -Configuration Release -Platform x64
- name: Upload MSIX artifact
uses: actions/upload-artifact@v4
with:
name: Everything2Everything-x64-msix-${{ github.sha }}
path: packaging/dist/Everything2Everything-x64.msix
retention-days: 14

View file

@ -1,98 +0,0 @@
name: Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
tag:
description: '릴리즈 태그 (예: v0.1.0)'
required: true
permissions:
contents: write
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Generate placeholder logos
shell: pwsh
run: ./packaging/GenerateAssets.ps1
- name: Decode PFX (if secret provided)
id: pfx
shell: pwsh
env:
PFX_BASE64: ${{ secrets.PFX_BASE64 }}
run: |
if ($env:PFX_BASE64) {
$bytes = [Convert]::FromBase64String($env:PFX_BASE64)
$path = Join-Path $env:RUNNER_TEMP 'cert.pfx'
[IO.File]::WriteAllBytes($path, $bytes)
"pfx_path=$path" >> $env:GITHUB_OUTPUT
Write-Host '✅ PFX 디코딩 완료 — 서명 모드로 빌드'
} else {
Write-Host ' PFX_BASE64 secret 없음 — unsigned 모드로 빌드'
}
- name: Build MSIX (signed if PFX, else unsigned)
shell: pwsh
env:
PFX_PASSWORD: ${{ secrets.PFX_PASSWORD }}
run: |
$pfx = '${{ steps.pfx.outputs.pfx_path }}'
if ($pfx) {
$sec = ConvertTo-SecureString -String $env:PFX_PASSWORD -AsPlainText -Force
./packaging/BuildMsix.ps1 -Configuration Release -Platform x64 -Sign -PfxPath $pfx -PfxPassword $sec
} else {
./packaging/BuildMsix.ps1 -Configuration Release -Platform x64
}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Everything2Everything-x64-msix
path: packaging/dist/Everything2Everything-x64.msix
- name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.inputs.tag || github.ref_name }}
files: packaging/dist/Everything2Everything-x64.msix
generate_release_notes: true
body: |
## Everything2Everything
모든 파일을 우클릭 한 번으로 JPEG 로 변환합니다.
### 설치 방법
1. 아래 `Everything2Everything-x64.msix` 다운로드.
2. 관리자 PowerShell:
```powershell
# 자체 서명 인증서를 신뢰 저장소에 등록 (PFX 별도 보유 필요)
Import-PfxCertificate -CertStoreLocation Cert:\LocalMachine\TrustedPeople `
-FilePath .\Everything2Everything-DevCert.pfx `
-Password (ConvertTo-SecureString 'Everything2EverythingDev' -AsPlainText -Force)
# MSIX 사이드로드
Add-AppxPackage -Path .\Everything2Everything-x64.msix -ForceApplicationShutdown
```
3. PNG/HEIC/PDF 등 파일 우클릭 → "JPEG로 빠른 변환" 또는 "JPEG로 변환…"
> 이 패키지는 자체 서명입니다. 첫 PC 1회만 인증서 등록이 필요합니다.
### 변경사항

View file

@ -36,7 +36,7 @@ public class AdService : IAdService
Description = "Everything2Everything 공식 후원 및 제휴 파트너십을 확인하세요.", Description = "Everything2Everything 공식 후원 및 제휴 파트너십을 확인하세요.",
BadgeText = "스폰서", BadgeText = "스폰서",
ImageUrl = "pack://application:,,,/Everything2Everything;component/Assets/logo-mark.png", ImageUrl = "pack://application:,,,/Everything2Everything;component/Assets/logo-mark.png",
TargetUrl = "https://github.com/yunchan8804/Everything2Everthing", TargetUrl = "https://git.chanpaca.net/yunchan/Everything2Everything",
CtaText = "자세히 보기", CtaText = "자세히 보기",
Type = AdType.Banner, Type = AdType.Banner,
IsActive = true, IsActive = true,
@ -50,7 +50,7 @@ public class AdService : IAdService
Description = "FFmpeg 및 LibRaw 가속 엔진으로 수천 장의 이미지를 순식간에 처리합니다.", Description = "FFmpeg 및 LibRaw 가속 엔진으로 수천 장의 이미지를 순식간에 처리합니다.",
BadgeText = "AD", BadgeText = "AD",
ImageUrl = "pack://application:,,,/Everything2Everything;component/Assets/glyph-video.png", ImageUrl = "pack://application:,,,/Everything2Everything;component/Assets/glyph-video.png",
TargetUrl = "https://github.com/yunchan8804/Everything2Everthing#features", TargetUrl = "https://git.chanpaca.net/yunchan/Everything2Everything#features",
CtaText = "가이드 보기", CtaText = "가이드 보기",
Type = AdType.Banner, Type = AdType.Banner,
IsActive = true, IsActive = true,
@ -65,7 +65,7 @@ public class AdService : IAdService
Description = "개인 및 기업을 위한 고성능 무손실 일괄 변환. 워터마크 없이 100% 무료로 자유롭게 활용하세요.", Description = "개인 및 기업을 위한 고성능 무손실 일괄 변환. 워터마크 없이 100% 무료로 자유롭게 활용하세요.",
BadgeText = "스폰서 추천", BadgeText = "스폰서 추천",
ImageUrl = "pack://application:,,,/Everything2Everything;component/Assets/illus-done.png", ImageUrl = "pack://application:,,,/Everything2Everything;component/Assets/illus-done.png",
TargetUrl = "https://github.com/yunchan8804/Everything2Everthing", TargetUrl = "https://git.chanpaca.net/yunchan/Everything2Everything",
CtaText = "파트너십 문의", CtaText = "파트너십 문의",
Type = AdType.LargeCard, Type = AdType.LargeCard,
IsActive = true, IsActive = true,
@ -79,7 +79,7 @@ public class AdService : IAdService
Description = "로컬 LLM과 Tesseract OCR을 결합하여 스캔 문서와 PDF를 즉시 검색 가능한 텍스트로 변환합니다.", Description = "로컬 LLM과 Tesseract OCR을 결합하여 스캔 문서와 PDF를 즉시 검색 가능한 텍스트로 변환합니다.",
BadgeText = "AD", BadgeText = "AD",
ImageUrl = "pack://application:,,,/Everything2Everything;component/Assets/glyph-ai.png", ImageUrl = "pack://application:,,,/Everything2Everything;component/Assets/glyph-ai.png",
TargetUrl = "https://github.com/yunchan8804/Everything2Everthing", TargetUrl = "https://git.chanpaca.net/yunchan/Everything2Everything",
CtaText = "기능 살펴보기", CtaText = "기능 살펴보기",
Type = AdType.LargeCard, Type = AdType.LargeCard,
IsActive = true, IsActive = true,

View file

@ -22,6 +22,7 @@ public class AdServiceTests
Assert.False(string.IsNullOrWhiteSpace(ad.Title)); Assert.False(string.IsNullOrWhiteSpace(ad.Title));
Assert.False(string.IsNullOrWhiteSpace(ad.Description)); Assert.False(string.IsNullOrWhiteSpace(ad.Description));
Assert.False(string.IsNullOrWhiteSpace(ad.TargetUrl)); Assert.False(string.IsNullOrWhiteSpace(ad.TargetUrl));
Assert.Contains("git.chanpaca.net", ad.TargetUrl);
}); });
} }
@ -39,6 +40,7 @@ public class AdServiceTests
Assert.False(string.IsNullOrWhiteSpace(ad.Title)); Assert.False(string.IsNullOrWhiteSpace(ad.Title));
Assert.False(string.IsNullOrWhiteSpace(ad.Description)); Assert.False(string.IsNullOrWhiteSpace(ad.Description));
Assert.False(string.IsNullOrWhiteSpace(ad.TargetUrl)); Assert.False(string.IsNullOrWhiteSpace(ad.TargetUrl));
Assert.Contains("git.chanpaca.net", ad.TargetUrl);
}); });
} }

View file

@ -37,6 +37,7 @@ public class AgyChatClientTests
[Fact] [Fact]
public void LlmProvider_ResolveClient_AutoSelectsAgyWhenNoKey() public void LlmProvider_ResolveClient_AutoSelectsAgyWhenNoKey()
{ {
if (!ExternalToolDetector.IsAgyAvailable(out _)) return;
var store = new FakeStore(); var store = new FakeStore();
var provider = new LlmProvider(store); var provider = new LlmProvider(store);
var (client, model) = provider.ResolveClientForTesting(new AiOptions { Backend = "agy" }); var (client, model) = provider.ResolveClientForTesting(new AiOptions { Backend = "agy" });