このドキュメントでは、GitHub Actions を使用して Blender アドオンの静的 Extensions リポジトリを自動でビルドし、GitHub Pages にデプロイする方法について説明します。
注意
このドキュメントはClineを使用して自作したBlender ExtensionsをGitHub Pagesにデプロイするために実行したタスクを元に、Clineによって自動生成されました。
概要
この方法では、以下のプロセスを自動化します。
-
vで始まる Git タグ (例:v1.2.3) がリポジトリにプッシュされることをトリガーとします。 - GitHub Actions ワークフローが実行されます。
- ワークフロー内で Blender がセットアップされます。
- アドオンのソースファイル (
__init__.py,blender_manifest.tomlなど) が ZIP ファイルにパッケージ化されます。 - Blender のコマンドラインツール (
extension server-generate) を使用して、ZIP ファイルからindex.json(リポジトリインデックス) とindex.html(簡単なリスト表示ページ) が生成されます。 - 生成されたファイル (
addon.zip,index.json,index.html) が GitHub Pages 用のブランチ (通常はgh-pages) にデプロイされます。 - (オプション) 同時に GitHub Release が作成され、
addon.zipとindex.jsonがアセットとしてアップロードされます。
これにより、ユーザーは Blender のプリファレンスからあなたの GitHub Pages URL (https://<username>.github.io/<repository>/index.json) をリポジトリとして追加し、アドオンを簡単にインストール・更新できるようになります。
前提条件
-
Blender アドオンプロジェクト:
__init__.pyとblender_manifest.tomlを含む基本的なアドオン構造が必要です。 - GitHub リポジトリ: プロジェクトのソースコードがホストされている GitHub リポジトリ。
-
GitHub Pages の有効化: リポジトリの Settings > Pages で GitHub Pages が有効になっていること。
- Source: "Deploy from a branch" を選択。
-
Branch: ワークフローがデプロイするブランチ (通常は
gh-pages) とフォルダ (/(root)) を選択します。gh-pagesブランチが存在しない場合、ワークフローが初回実行時に自動作成します。
GitHub Actions ワークフローの設定
リポジトリの .github/workflows/ ディレクトリに、以下のような内容の YAML ファイル (例: package.yml) を作成します。
name: Package Blender Add-on with index.json
# タグ(例: v1.0.0)のプッシュで実行
on:
push:
tags:
- 'v*'
jobs:
build:
runs-on: ubuntu-latest
# リリース作成と Pages デプロイに必要な権限
permissions:
contents: write
steps:
# 1. ソースコードのチェックアウト
- name: Checkout code
uses: actions/checkout@v4 # 最新版推奨
# 2. Blender のダウンロードと展開 (バージョンは適宜変更)
- name: Download Blender
run: |
BLENDER_VERSION="4.2.0" # 使用するBlenderバージョン
BLENDER_ARCHIVE="blender-${BLENDER_VERSION}-linux-x64.tar.xz"
BLENDER_DIR_NAME="blender-${BLENDER_VERSION}-linux-x64"
wget "https://download.blender.org/release/Blender${BLENDER_VERSION%.*}/${BLENDER_ARCHIVE}"
tar -xf "${BLENDER_ARCHIVE}"
# Blender実行ファイルを後続ステップで使えるようにPATHに追加
echo "$PWD/${BLENDER_DIR_NAME}" >> $GITHUB_PATH
# 3. アドオン用ZIPパッケージの生成 (アドオンファイル名を指定)
- name: Create ZIP package for add-on
run: |
zip addon.zip __init__.py blender_manifest.toml # アドオンに必要なファイルを追加
# 4. index.json生成用のリポジトリフォルダを準備
- name: Prepare repository folder for index generation
run: |
mkdir repo
cp addon.zip repo/
# 5. Blenderを利用して index.json と index.html を生成
- name: Generate index.json with Blender
run: |
# GitHub Pages の URL を設定 (自分のリポジトリに合わせて変更)
# BASE_URL="https://kurotori4423.github.io/AvatarExporter/" # Blender 4.2 では --base-url 未対応
echo "Generating index.json and index.html"
# --html オプションでHTMLも生成
# 注意: Blender 4.2 では --base-url は認識されないため削除
blender --background --factory-startup --command extension server-generate --repo-dir=$(pwd)/repo --html
echo "Generated files in repo directory:"
ls -l repo/
# 6. (オプション) 成果物をアーティファクトとしてアップロード
- name: Upload package and index as artifacts
uses: actions/upload-artifact@v4
with:
name: addon-package-and-index
path: |
repo/addon.zip # repo/ 内のファイルを指定
repo/index.json
repo/index.html
# 7. (オプション) GitHub Releaseの作成
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v2 # 最新版推奨
with:
# リリースノートを自動生成する場合など
# generate_release_notes: true
tag_name: ${{ github.ref }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 8. (オプション) リリースアセットとしてZIPファイルをアップロード
- name: Upload Release Assets
uses: softprops/action-gh-release@v2 # 最新版推奨
with:
files: |
repo/addon.zip # repo/ 内のファイルを指定
# repo/index.json # 通常、リリースにはZIPのみ含めることが多い
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 9. 生成されたファイルを GitHub Pages にデプロイ
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./repo # repo ディレクトリの内容をデプロイ
# publish_branch: gh-pages # デプロイ先ブランチ (デフォルト: gh-pages)
# commit_message: 'Deploy extension repository files for ${{ github.ref }}' # コミットメッセージ
重要なポイント:
-
permissions: contents: write: GitHub Release の作成やgh-pagesブランチへのプッシュ(デプロイ)には、この権限が必要です。 -
Blender バージョン: ワークフロー内で使用する Blender のバージョン (
BLENDER_VERSION) を、アドオンがサポートするバージョンに合わせてください。ダウンロード URL もそれに合わせます。 -
$GITHUB_PATH: Blender の実行ファイルがあるディレクトリを$GITHUB_PATHに追加することで、後続のステップでblenderコマンドが利用可能になります。 -
ZIP パッケージ化:
zip addon.zip ...の部分で、アドオンの動作に必要なファイルのみを含めるようにします。 -
server-generate:--repo-dirで ZIP ファイルがあるディレクトリを指定し、--htmlで HTML ファイルも生成します。Blender 4.2 では--base-urlが使えないため注意が必要です (相対パスで解決されることを期待)。 -
peaceiris/actions-gh-pages:publish_dir: ./repoで、server-generateがファイルを生成したrepoディレクトリの内容をデプロイ対象として指定します。
使い方
- アドオンのコードを変更したら、
main(または開発用) ブランチにコミット&プッシュします。 - リリース準備ができたら、バージョン番号で Git タグを作成し、プッシュします。
# 例: バージョン 1.1.0 のタグを作成 git tag v1.1.0 # 作成したタグを GitHub にプッシュ git push origin v1.1.0 - タグのプッシュにより、GitHub Actions ワークフローが自動的に実行されます。
- ワークフローが完了すると、GitHub Pages が更新され、(設定していれば) GitHub Release も作成されます。
Blender へのリポジトリ追加
ユーザーは以下の手順でアドオンリポジトリを追加できます。
- Blender を開き、
編集>プリファレンス>アドオンに移動します。 -
拡張機能リポジトリ>リポジトリタブを開きます。 -
[+]>リモートリポジトリを追加を選択します。 - URL として、デプロイされた
index.jsonの URL (例:https://<username>.github.io/<repository>/index.json) を入力します。 -
OKをクリックします。 - リポジトリリストから追加したリポジトリを選択し、アドオンを検索・インストールします。
これで、GitHub Actions を利用した Blender Extensions リポジトリの自動デプロイが設定できました。
参考ドキュメント