콘텐츠로 이동

리포지토리 시크릿

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_IDAzure AD 테넌트
AZURE_SUBSCRIPTION_IDAzure 구독
AZURE_CODE_SIGNING_ACCOUNTTrusted Signing 계정 이름
AZURE_CODE_SIGNING_ENDPOINTTrusted Signing 엔드포인트 URL
AZURE_CODE_SIGNING_PROFILE인증서 프로필 이름

직접 설정하려면: Azure 계정을 생성하고, Trusted Signing 리소스를 설정하고, 인증서 프로필을 만들고, 적절한 권한을 가진 서비스 주체를 등록하세요. Microsoft의 Trusted Signing 빠른 시작 가이드에서 전체 과정을 안내합니다.

건너뛰는 경우: Windows 빌드는 여전히 작동하지만, 사용자들은 공포의 파란색 SmartScreen 화면을 마주하게 됩니다 — 다들 아시는 그 화면입니다. 우리 모두 “그래도 실행”을 클릭하고 최선을 바란 경험이 있을 겁니다. macOS 및 Linux 빌드에는 영향이 없습니다.

Tauri의 내장 업데이터는 업데이트가 변조된 소스가 아닌 실제 게시자로부터 온 것인지 검증합니다. 앱이 새 버전을 확인할 때 업데이트를 다운로드하고, 앱에 내장된 공개 키와 대조하여 서명을 검증합니다. 이러한 서명을 생성하는 개인 키는 CI에 저장됩니다.

시크릿용도
TAURI_PRIVATE_KEY업데이트 서명용 Ed25519 개인 키
TAURI_KEY_PASSWORD개인 키를 보호하는 비밀번호

직접 설정하려면: pnpm tauri signer generate로 키 쌍을 생성하세요. 개인 키와 비밀번호를 리포지토리 시크릿에 넣고, 공개 키를 tauri.conf.jsonplugins.updater.pubkey 항목에 설정하세요.

건너뛰는 경우: 앱은 정상적으로 빌드되지만, 자동 업데이터가 작동하지 않습니다. 사용자가 새 버전을 수동으로 다운로드해야 합니다.

릴리스 아티팩트를 빌드한 후, CI 파이프라인은 모든 바이너리(.exe, .dmg, .deb, .rpm, .AppImage)를 VirusTotal에 업로드하여 자동 악성코드 검사를 수행합니다. 이는 신뢰 신호로서, 사용자가 공식 빌드가 안전한지 확인할 수 있게 해줍니다.

시크릿용도
VIRUSTOTAL_API_KEYVirusTotal v3 API 키

직접 설정하려면: 무료 VirusTotal 계정을 생성하고 프로필에서 API 키를 복사하세요.

건너뛰는 경우: VirusTotal 검사 단계가 조용히 실패합니다. 빌드는 여전히 성공하고 정상적으로 릴리스됩니다 — 단지 자동 검사 결과가 없을 뿐입니다.

멀티플레이어 릴레이 서버 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 릴리스 빌드에서만 의미가 있습니다.