"GitHub Releases는 Electron 앱 배포의 사실상 표준" — 코드 호스팅과 배포가 한 곳에서 이루어지고, 자동 업데이트와도 연동됩니다.


electron-builder + GitHub Releases

YAML
# electron-builder.yml
publish:
  - provider: github
    owner: your-username
    repo: your-app
    releaseType: release  # release | draft | prerelease
BASH
# GitHub 토큰 환경변수 설정
export GH_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx

# 빌드 + GitHub Releases에 업로드
npx electron-builder --publish always

publish 옵션

동작
always항상 업로드
onTag태그가 있을 때만 업로드
onTagOrDraft태그 또는 드래프트 릴리스
never업로드하지 않음

릴리스 노트 자동 생성

YAML
# .github/release.yml
changelog:
  categories:
    - title: 새로운 기능
      labels:
        - enhancement
        - feature
    - title: 버그 수정
      labels:
        - bug
        - fix
    - title: 기타 변경사항
      labels:
        - "*"

conventional-changelog 활용

BASH
npm install conventional-changelog-cli --save-dev
JSON
{
  "scripts": {
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
  }
}

자동 업데이트와 연동

GitHub Releases에 업로드된 파일은 electron-updater가 자동으로 감지합니다.

PLAINTEXT
GitHub Release v1.2.0
├── MyApp-1.2.0-mac-x64.dmg
├── MyApp-1.2.0-mac-x64.zip       ← 자동 업데이트용
├── MyApp-1.2.0-mac-x64.zip.blockmap
├── MyApp-1.2.0-win-x64.exe
├── MyApp-1.2.0-win-x64.exe.blockmap
├── MyApp-1.2.0-linux-x64.AppImage
├── latest-mac.yml                 ← 업데이트 메타데이터
├── latest.yml                     ← Windows 업데이트 메타데이터
└── latest-linux.yml               ← Linux 업데이트 메타데이터

Pre-release와 채널 분리

JAVASCRIPT
// 베타 채널 사용자에게만 프리릴리스 배포
autoUpdater.channel = 'beta'; // 'latest'(안정) 또는 'beta'

// electron-builder.yml
publish:
  - provider: github
    releaseType: prerelease  # 프리릴리스로 생성

면접 포인트 정리

  • --publish always로 빌드 결과물을 자동으로 GitHub Releases에 업로드
  • latest.yml 파일이 자동 업데이트의 버전 확인에 사용됨
  • conventional-changelog로 커밋 메시지 기반 릴리스 노트 자동 생성
  • Pre-release로 베타 채널 사용자에게만 먼저 배포 가능

GitHub Releases를 다뤘으면, 다음은 Private Update Server를 알아봅시다.

댓글 로딩 중...