GitHub Releases — 자동 배포와 릴리스 노트
"GitHub Releases는 Electron 앱 배포의 사실상 표준" — 코드 호스팅과 배포가 한 곳에서 이루어지고, 자동 업데이트와도 연동됩니다.
electron-builder + GitHub Releases
# electron-builder.yml
publish:
- provider: github
owner: your-username
repo: your-app
releaseType: release # release | draft | prerelease
# GitHub 토큰 환경변수 설정
export GH_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
# 빌드 + GitHub Releases에 업로드
npx electron-builder --publish always
publish 옵션
| 값 | 동작 |
|---|---|
always | 항상 업로드 |
onTag | 태그가 있을 때만 업로드 |
onTagOrDraft | 태그 또는 드래프트 릴리스 |
never | 업로드하지 않음 |
릴리스 노트 자동 생성
# .github/release.yml
changelog:
categories:
- title: 새로운 기능
labels:
- enhancement
- feature
- title: 버그 수정
labels:
- bug
- fix
- title: 기타 변경사항
labels:
- "*"
conventional-changelog 활용
npm install conventional-changelog-cli --save-dev
{
"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
}
}
자동 업데이트와 연동
GitHub Releases에 업로드된 파일은 electron-updater가 자동으로 감지합니다.
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와 채널 분리
// 베타 채널 사용자에게만 프리릴리스 배포
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를 알아봅시다.
댓글 로딩 중...