리포지토리 시크릿
En Parlant~는 GitHub Actions를 사용하여 Windows, macOS, Linux용 릴리스 바이너리를 빌드합니다. CI 파이프라인은 코드 서명, 업데이트 서명, 바이러스 검사, 멀티플레이어 릴레이 URL을 위한 자격 증명이 필요합니다. 이러한 값들은 GitHub 리포지토리 시크릿으로 저장됩니다 — 워크플로 실행 시 GitHub가 주입하지만 절대 화면에 표시하지 않는 암호화된 값입니다.
En Parlant~를 포크하여 직접 서명된 빌드를 생성하려면 자체 시크릿을 설정해야 합니다. 시크릿 없이도 빌드는 정상적으로 컴파일되지만, 바이너리에 서명이 되지 않고, 업데이트 검증이 작동하지 않으며, VirusTotal 검사 단계가 건너뛰어집니다.
시크릿 목록
섹션 제목: “시크릿 목록”Azure Trusted Signing (Windows 코드 서명)
섹션 제목: “Azure Trusted Signing (Windows 코드 서명)”Windows 사용자는 서명되지 않은 .exe를 실행할 때 SmartScreen 경고(“Windows가 PC를 보호했습니다”)를 보게 됩니다. 코드 서명은 이 경고를 제거하고 바이너리가 검증된 게시자로부터 제공된 것임을 Windows에 알려줍니다.
En Parlant~는 이를 위해 Azure Trusted Signing을 사용합니다. Tauri 빌드는 Windows 빌드 단계에서 trusted-signing-cli를 호출하며, 이 도구가 Azure와 통신하여 실행 파일에 서명합니다.
| 시크릿 | 용도 |
|---|---|
AZURE_CLIENT_ID | 서비스 주체 앱 ID |
AZURE_CLIENT_SECRET | 서비스 주체 자격 증명 |
AZURE_TENANT_ID | Azure AD 테넌트 |
AZURE_SUBSCRIPTION_ID | Azure 구독 |
AZURE_CODE_SIGNING_ACCOUNT | Trusted Signing 계정 이름 |
AZURE_CODE_SIGNING_ENDPOINT | Trusted Signing 엔드포인트 URL |
AZURE_CODE_SIGNING_PROFILE | 인증서 프로필 이름 |
직접 설정하려면: Azure 계정을 생성하고, Trusted Signing 리소스를 설정하고, 인증서 프로필을 만들고, 적절한 권한을 가진 서비스 주체를 등록하세요. Microsoft의 Trusted Signing 빠른 시작 가이드에서 전체 과정을 안내합니다.
건너뛰는 경우: Windows 빌드는 여전히 작동하지만, 사용자들은 공포의 파란색 SmartScreen 화면을 마주하게 됩니다 — 다들 아시는 그 화면입니다. 우리 모두 “그래도 실행”을 클릭하고 최선을 바란 경험이 있을 겁니다. macOS 및 Linux 빌드에는 영향이 없습니다.
Tauri 업데이트 서명
섹션 제목: “Tauri 업데이트 서명”Tauri의 내장 업데이터는 업데이트가 변조된 소스가 아닌 실제 게시자로부터 온 것인지 검증합니다. 앱이 새 버전을 확인할 때 업데이트를 다운로드하고, 앱에 내장된 공개 키와 대조하여 서명을 검증합니다. 이러한 서명을 생성하는 개인 키는 CI에 저장됩니다.
| 시크릿 | 용도 |
|---|---|
TAURI_PRIVATE_KEY | 업데이트 서명용 Ed25519 개인 키 |
TAURI_KEY_PASSWORD | 개인 키를 보호하는 비밀번호 |
직접 설정하려면: pnpm tauri signer generate로 키 쌍을 생성하세요. 개인 키와 비밀번호를 리포지토리 시크릿에 넣고, 공개 키를 tauri.conf.json의 plugins.updater.pubkey 항목에 설정하세요.
건너뛰는 경우: 앱은 정상적으로 빌드되지만, 자동 업데이터가 작동하지 않습니다. 사용자가 새 버전을 수동으로 다운로드해야 합니다.
VirusTotal
섹션 제목: “VirusTotal”릴리스 아티팩트를 빌드한 후, CI 파이프라인은 모든 바이너리(.exe, .dmg, .deb, .rpm, .AppImage)를 VirusTotal에 업로드하여 자동 악성코드 검사를 수행합니다. 이는 신뢰 신호로서, 사용자가 공식 빌드가 안전한지 확인할 수 있게 해줍니다.
| 시크릿 | 용도 |
|---|---|
VIRUSTOTAL_API_KEY | VirusTotal v3 API 키 |
직접 설정하려면: 무료 VirusTotal 계정을 생성하고 프로필에서 API 키를 복사하세요.
건너뛰는 경우: VirusTotal 검사 단계가 조용히 실패합니다. 빌드는 여전히 성공하고 정상적으로 릴리스됩니다 — 단지 자동 검사 결과가 없을 뿐입니다.
멀티플레이어 릴레이 URL
섹션 제목: “멀티플레이어 릴레이 URL”멀티플레이어 릴레이 서버 URL은 빌드 시점에 주입되어 앱이 온라인 게임을 위해 어디에 접속해야 하는지 알 수 있게 합니다.
| 시크릿 | 용도 |
|---|---|
VITE_RELAY_URL | 멀티플레이어 릴레이의 WebSocket URL (예: wss://your-relay.fly.dev) |
직접 설정하려면: 자체 릴레이 서버를 배포하고(멀티플레이어 서버 설정 가이드 참조) 해당 공개 URL을 설정하세요.
건너뛰는 경우: 런타임에 앱 설정에서 릴레이 URL을 지정하면 멀티플레이어가 여전히 작동합니다. 이 시크릿은 사용자가 수동으로 설정할 필요 없도록 기본값을 지정하는 역할만 합니다.
| 시크릿 그룹 | 필요한 용도 | 건너뛸 수 있나요? |
|---|---|---|
| Azure (시크릿 7개) | 서명된 Windows 빌드 | 예 — 빌드는 작동하지만 사용자에게 SmartScreen 경고가 표시됩니다 |
| Tauri (시크릿 2개) | 자동 업데이터 | 예 — 빌드는 작동하지만 자동 업데이트가 없습니다 |
| VirusTotal (시크릿 1개) | 악성코드 검사 보고서 | 예 — 빌드는 작동하지만 검사 결과가 없습니다 |
| 릴레이 URL (시크릿 1개) | 기본 멀티플레이어 서버 | 예 — 사용자가 앱 설정에서 직접 지정할 수 있습니다 |
이러한 시크릿은 로컬에서 앱을 빌드하고 실행하는 데에는 필요하지 않습니다. CI/CD 릴리스 빌드에서만 의미가 있습니다.