ci: build.yml + release.yml 보강 (서명 옵션 + workflow_dispatch)
- build.yml 추가: PR/push 시 솔루션 빌드 + MSIX 산출 검증, 14일 보관 - release.yml: PFX_BASE64 / PFX_PASSWORD secrets 있으면 자동 서명, 없으면 unsigned. workflow_dispatch로 수동 트리거도 가능. - 릴리즈 본문에 인증서 등록 + 사이드로드 가이드 inline 포함. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
784167ccff
commit
d24cb90ed2
2 changed files with 96 additions and 10 deletions
43
.github/workflows/build.yml
vendored
Normal file
43
.github/workflows/build.yml
vendored
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
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 EverythingToJpeg.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: EverythingToJpeg-x64-msix-${{ github.sha }}
|
||||||
|
path: packaging/dist/EverythingToJpeg-x64.msix
|
||||||
|
retention-days: 14
|
||||||
61
.github/workflows/release.yml
vendored
61
.github/workflows/release.yml
vendored
|
|
@ -5,6 +5,10 @@ on:
|
||||||
tags:
|
tags:
|
||||||
- 'v*'
|
- 'v*'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description: '릴리즈 태그 (예: v0.1.0)'
|
||||||
|
required: true
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
@ -24,11 +28,38 @@ jobs:
|
||||||
- name: Setup MSBuild
|
- name: Setup MSBuild
|
||||||
uses: microsoft/setup-msbuild@v2
|
uses: microsoft/setup-msbuild@v2
|
||||||
|
|
||||||
- name: Build MSIX (unsigned)
|
- name: Generate placeholder logos
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
run: ./packaging/GenerateAssets.ps1
|
||||||
|
|
||||||
|
- name: Decode PFX (if secret provided)
|
||||||
|
id: pfx
|
||||||
|
shell: pwsh
|
||||||
|
env:
|
||||||
|
PFX_BASE64: ${{ secrets.PFX_BASE64 }}
|
||||||
run: |
|
run: |
|
||||||
./packaging/GenerateAssets.ps1
|
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
|
./packaging/BuildMsix.ps1 -Configuration Release -Platform x64
|
||||||
|
}
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|
@ -37,19 +68,31 @@ jobs:
|
||||||
path: packaging/dist/EverythingToJpeg-x64.msix
|
path: packaging/dist/EverythingToJpeg-x64.msix
|
||||||
|
|
||||||
- name: Create GitHub Release
|
- name: Create GitHub Release
|
||||||
if: startsWith(github.ref, 'refs/tags/v')
|
if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
|
tag_name: ${{ github.event.inputs.tag || github.ref_name }}
|
||||||
files: packaging/dist/EverythingToJpeg-x64.msix
|
files: packaging/dist/EverythingToJpeg-x64.msix
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
body: |
|
body: |
|
||||||
## 설치 방법
|
## EverythingToJpeg
|
||||||
|
|
||||||
1. 본 릴리즈에서 `EverythingToJpeg-x64.msix` 와 함께 배포된 PFX 인증서를 받습니다.
|
모든 파일을 우클릭 한 번으로 JPEG 로 변환합니다.
|
||||||
|
|
||||||
|
### 설치 방법
|
||||||
|
1. 아래 `EverythingToJpeg-x64.msix` 다운로드.
|
||||||
2. 관리자 PowerShell:
|
2. 관리자 PowerShell:
|
||||||
```powershell
|
```powershell
|
||||||
.\Install-EverythingToJpeg.ps1 -PfxPath .\EverythingToJpeg-DevCert.pfx -MsixPath .\EverythingToJpeg-x64.msix
|
# 자체 서명 인증서를 신뢰 저장소에 등록 (PFX 별도 보유 필요)
|
||||||
```
|
Import-PfxCertificate -CertStoreLocation Cert:\LocalMachine\TrustedPeople `
|
||||||
3. PNG/HEIC/PDF 등 파일을 우클릭 → "JPEG로 빠른 변환" 또는 "JPEG로 변환…"
|
-FilePath .\EverythingToJpeg-DevCert.pfx `
|
||||||
|
-Password (ConvertTo-SecureString 'EverythingToJpegDev' -AsPlainText -Force)
|
||||||
|
|
||||||
> 이 패키지는 자체 서명입니다. 인증서를 `LocalMachine\TrustedPeople`에 신뢰 등록해야 설치됩니다.
|
# MSIX 사이드로드
|
||||||
|
Add-AppxPackage -Path .\EverythingToJpeg-x64.msix -ForceApplicationShutdown
|
||||||
|
```
|
||||||
|
3. PNG/HEIC/PDF 등 파일 우클릭 → "JPEG로 빠른 변환" 또는 "JPEG로 변환…"
|
||||||
|
|
||||||
|
> 이 패키지는 자체 서명입니다. 첫 PC 1회만 인증서 등록이 필요합니다.
|
||||||
|
|
||||||
|
### 변경사항
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue