公開とアップデート
これはElectronチュートリアルのパート6です。
学習目標
これまでのチュートリアルに従ってきた場合、これは最後のステップです!このパートでは、アプリをGitHubリリースに公開し、アプリコードに自動アップデートを統合します。
update.electronjs.orgの使用
Electronメンテナーは、オープンソースアプリ向けにhttps://update.electronjs.orgで無料の自動アップデートサービスを提供しています。その要件は次のとおりです。
- あなたのアプリはmacOSまたはWindowsで動作します
- あなたのアプリは公開GitHubリポジトリを持っています
- ビルドはGitHubリリースに公開されます
- ビルドはコード署名されています (macOSのみ)
この時点で、すでにすべてのコードを公開GitHubリポジトリにプッシュしたと仮定します。
別のリポジトリホスト(例:GitLabまたはBitbucket)を使用している場合、またはコードリポジトリを非公開にする必要がある場合は、独自のElectronアップデートサーバーのホスティングに関するステップバイステップガイドを参照してください。
GitHubリリースの公開
Electron Forgeには、パッケージ化されたアプリケーションをさまざまなソースに自動的に配布できるPublisherプラグインがあります。このチュートリアルでは、GitHub Publisherを使用します。これにより、コードをGitHubリリースに公開できます。
個人アクセストークンの生成
Forgeは、許可なしにGitHub上の任意のリポジトリに公開できません。ForgeにGitHubリリースへのアクセス権を与える認証済みトークンを渡す必要があります。これを行う最も簡単な方法は、新しい個人アクセストークン(PAT)をpublic_repo
スコープで作成することです。これにより、公開リポジトリへの書き込みアクセス権が付与されます。**このトークンを秘密にしておくようにしてください。**
GitHub Publisherの設定
モジュールのインストール
ForgeのGitHub Publisherは、プロジェクトのdevDependencies
にインストールする必要があるプラグインです。
- npm
- Yarn
npm install --save-dev @electron-forge/publisher-github
yarn add --dev @electron-forge/publisher-github
Forgeでのパブリッシャーの設定
インストールしたら、Forgeの設定で設定する必要があります。オプションの完全なリストは、ForgeのPublisherGitHubConfig
APIドキュメントに記載されています。
module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'github-user-name',
name: 'github-repo-name'
},
prerelease: false,
draft: true
}
}
]
}
Forgeがリリースをドラフトとして公開するように設定されていることに注意してください。これにより、実際にエンドユーザーに公開することなく、生成された成果物を含むリリースを確認できます。リリースノートを作成し、配布ファイルが機能することを再確認した後、GitHubを介して手動でリリースを公開できます。
認証トークンの設定
パブリッシャーに認証トークンを認識させる必要もあります。デフォルトでは、GITHUB_TOKEN
環境変数に格納されている値を使用します。
publishコマンドの実行
Forgeのpublishコマンドをnpmスクリプトに追加します。
//...
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish"
},
//...
このコマンドは、構成されたメーカーを実行し、出力配布ファイルを新しいGitHubリリースに公開します。
- npm
- Yarn
npm run publish
yarn run publish
デフォルトでは、ホストオペレーティングシステムとアーキテクチャの単一の配布ファイルのみが公開されます。Forgeコマンドに--arch
フラグを渡すことで、異なるアーキテクチャに対して公開できます。
このリリースの名前は、プロジェクトのpackage.jsonファイルのversion
フィールドに対応します。
必要に応じて、Gitでリリースにタグ付けすることもできます。これにより、リリースがコード履歴内のラベル付きポイントに関連付けられます。npmには便利なnpm version
コマンドがあり、バージョン更新とタグ付けを処理できます。
ボーナス:GitHub Actionsでの公開
ローカルでの公開は、特にホストオペレーティングシステムの配布ファイルのみを作成できるため(つまり、macOSからWindowsの.exe
ファイルは公開できません)、困難な場合があります。
これに対する解決策は、GitHub Actionsなどの自動化ワークフローを介してアプリを公開することです。これは、Ubuntu、macOS、Windowsでクラウドでタスクを実行できます。Electron Fiddleで採用されている方法です。詳細については、FiddleのビルドとリリースパイプラインおよびForgeの設定を参照してください。
アップデートコードのインストルメンテーション
GitHubリリースを介して機能するリリースシステムができたので、新しいリリースがあるたびにElectronアプリにアップデートをダウンロードするように指示する必要があります。Electronアプリは、アップデートサーバーフィードから読み取って、ダウンロード可能な新しいバージョンがあるかどうかを確認するautoUpdaterモジュールを介してこれを行います。
update.electronjs.org サービスは、Updaterと互換性のあるフィードを提供します。例えば、Electron Fiddle v0.28.0 は、https://update.electronjs.org/electron/fiddle/darwin/v0.28.0 のエンドポイントを確認して、新しいGitHubリリースが利用可能かどうかをチェックします。
リリースがGitHubに公開された後、update.electronjs.org サービスはあなたのアプリケーションで動作するはずです。残りの手順は、autoUpdater モジュールでフィードを設定することだけです。
このプロセスを容易にするために、Electronチームはupdate-electron-app
モジュールをメンテナンスしています。これは、1つの関数呼び出しでupdate.electronjs.org のautoUpdaterボイラープレートを設定します。設定は不要です。このモジュールは、プロジェクトのpackage.jsonの"repository"
フィールドに一致するupdate.electronjs.orgフィードを検索します。
まず、モジュールをランタイム依存関係としてインストールします。
- npm
- Yarn
npm install update-electron-app
yarn add update-electron-app
次に、モジュールをインポートし、メインプロセスで即座に呼び出します。
require('update-electron-app')()
これで全てです!アプリケーションがパッケージ化されると、公開する新しいGitHubリリースごとに自動的に更新されます。
概要
このチュートリアルでは、Electron ForgeのGitHub Publisherを使用して、アプリの配布物をGitHubリリースにアップロードしました。配布物はプラットフォーム間で常に生成できるとは限らないため、マシンにアクセスできない場合は、継続的インテグレーションパイプラインでビルドと公開フローを設定することをお勧めします。
Electronアプリケーションは、autoUpdaterモジュールをアップデートサーバーフィードにポイントすることで自己更新できます。update.electronjs.orgは、GitHubリリースで公開されているオープンソースアプリケーションのためにElectronによって提供される無料のアップデートサーバーです。このサービスを使用するようにElectronアプリを設定するのは、update-electron-app
モジュールをインストールしてインポートするだけなので簡単です。
アプリケーションがupdate.electronjs.orgの対象外の場合は、代わりに独自のアップデートサーバーをデプロイし、autoUpdaterモジュールを自分で設定する必要があります。
これで、Electronのチュートリアルを正式に完了しました。ドキュメントの残りの部分を探求して、開発を楽しんでください!ご質問がある場合は、コミュニティのDiscordサーバーにお越しください。