Electron 自動アップデート実装ガイド
(ソースコード非公開・配布用パブリックリポジトリ分離構成)
このガイドは、ソースコードはPrivateリポジトリで管理しつつ、100MBを超えるインストーラーを無料で**Publicリポジトリ(Releases)**にて配布・自動更新するための手順書です。
前提・構成図
- 開発リポジトリ (Private): ソースコードがある場所。ここでGitHub Actionsを動かす。
- 配布リポジトリ (Public): 空っぽのリポジトリ。ビルドされたインストーラーだけがここに置かれる。
手順 1: 配布用リポジトリの作成
GitHub上で、インストーラーを置くためのPublicリポジトリを新規作成します。
- GitHubで New Repository を作成。
- Repository name:
my-app-releases(任意の名前) - Public / Private: Public を選択
重要: ここをPublicにしないと、無料ユーザーはインストーラーをダウンロードできず、自動更新が動きません。
- 「Initialize this repository with a README」にチェックを入れて作成。
手順 2: package.json の設定
開発リポジトリ(ソースコード側)の package.json に、electron-builder の設定を追記します。 自分のリポジトリではなく、手順1で作った配布用リポジトリを指定するのがポイントです。
json
{
"name": "your-app-name",
"version": "1.0.0",
"build": {
"appId": "com.yourname.yourapp",
"publish": {
"provider": "github",
"owner": "YourGitHubUserName",
"repo": "my-app-releases"
},
"win": {
"target": "nsis"
},
"mac": {
"target": "default"
}
}
}
---
### 手順 3: GitHub Access Token (PAT) の取得と設定
GitHub Actions(Private側)から、配布リポジトリ(Public側)へファイルをアップロードするために、強力な権限を持つトークンが必要です。
#### 3-1. トークンの発行
1. GitHubの右上のアイコン → **Settings**
2. 左メニュー最下部 **Developer settings** → **Personal access tokens** → **Tokens (classic)**
3. **Generate new token (classic)** をクリック。
4. **Note:** 「Electron Auto Update」など分かりやすい名前を入力。
5. **Expiration:** 期限を設定(無期限にするか、定期的に更新するかはお任せします)。
6. **Select scopes:** **`repo`** (Full control of private repositories) にチェックを入れる。
7. **Generate token** を押し、表示されたトークン(`ghp_...`)をコピーする。
> **注意:** この画面を閉じると二度と表示されないので必ずコピーしてください。
#### 3-2. 開発リポジトリへの登録
1. **開発用Privateリポジトリ**のページを開く。
2. **Settings** → **Secrets and variables** → **Actions**
3. **New repository secret** をクリック。
4. **Name:** `GH_TOKEN`
5. **Secret:** さっきコピーしたトークンを貼り付け。
6. **Add secret** で保存。
---
### 手順 4: GitHub Actions の作成
開発リポジトリの `.github/workflows/release.yml` に以下のファイルを作成します。
`v1.0.0` などのタグがPushされた時だけビルドが走ります。
```yaml
name: Build and Release
on:
push:
tags:
- 'v*' # "v1.0.0" などのタグが打たれた時のみ実行
jobs:
release:
runs-on: windows-latest # Mac向けなら macos-latest
permissions:
contents: write
steps:
- name: Check out git repository
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install Dependencies
run: npm ci
# ビルドとリリース実行
# GH_TOKENを使って、package.jsonで指定した「配布用レポ」にアップロードします
- name: Build & Release
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: npm run electron-builder -- --publish always