Chrome拡張用のパッケージをGitHubActionsを使ってストアに自動アップロードする
はじめに
個人開発でTabTabTabというタブ管理用のChrome拡張を開発している。
今まではリリースのたびにローカルでパッケージをビルドをしてZip化し、手動でストアにアップロードしていた。さすがに面倒なのでGitHubActionsを使って自動化することにした。
設定方法
まずChrome拡張のドキュメントを探してみると、アイテムを公開するためのAPIが存在した。
これをcurlで叩いても良いがめんどくさい。ツールがないか探したところ、以下のActionをを見つけた。
やりたいことができそうなActionだったので早速以下のワークフローを組んでみた。
name: Upload to Chrome Web Store
on:
push:
tags:
- '*'
jobs:
upload:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
- name: Install npm packages
run: npm ci
- name: Build
run: npm run build
- name: Zip
run: zip -r dist.zip dist
- name: Upload to Chrome Web Store
uses: mnao305/chrome-extension-upload@v5.0.0
with:
file-path: dist.zip
extension-id: ${{ secrets.EXTENSION_ID }}
client-id: ${{ secrets.CLIENT_ID }}
client-secret: ${{ secrets.CLIENT_SECRET }}
refresh-token: ${{ secrets.REFRESH_TOKEN }}
publish: false
タグのプッシュをトリガーとして実行されるようにしている。また、自分の場合はdist
ディレクトリにビルド成果物が存在するので、それをZip化してアップロードしている。
ストアへのアップロード用のActionであるmnao305/chrome-extension-upload
の注意点として、デフォルトでアイテムのアップロード後に審査に提出するようになっている。もし実行をアップロードまでとして審査提出前にストアの掲載文や画像を変更したい場合は、publish: false
を指定する必要がある。ただし、その場合は手動で審査提出を行わなければならない。
また、client-id
やclient-secret
、refresh-token
の取得方法については以下のドキュメントが詳しいので参照されたい。
おわり
これでリリース時には審査の提出をするだけで良くなった。
GitHubActionsではこういった便利ツールが大体Actionとして公開されているので本当に助かっている。