はじめに
やっほー!みんな、開発楽しんでる?✨
AIを使ったGitHub上での開発自動化プロジェクト「gemini-actions-lab」から、v0.7.0のリリース情報をお届けするよっ!
今回のアップデートは、CLIツールの使いやすさとデプロイの自動化がマジでパワーアップしたから、ぜひチェックしてね😉
主な変更点
今回のリリースでのイケてるポイントはこの3つ!
-
CLIツールがPyPIに公開!
pip install gemini-actions-lab-cliってコマンド一発で、誰でも簡単にCLIツールをインストールできるようになったよ!もうリポジトリをクローンして…みたいな手間はいらないってワケ。超楽ちんじゃん?😎 -
Hugging Face Spaceへの自動デプロイ機能を追加!
新しく追加されたGitHub Actionsワークフロー (huggingface-space-deploy.yml) を使えば、Hugging Face Spaceに自動でデプロイできるようになったんだ。デモアプリとかをサクッと公開したいときにマジ便利! -
プロジェクトの全体像がわかるアーキテクチャ図を追加!
「このプロジェクト、全体的にどうなってんの?」っていうのが一目でわかるように、イケてるアーキテクチャ図をドキュメントに追加したよ。これで、プロジェクトの理解がもっと深まるはず!
技術的な詳細
ここからは、ちょいディープな技術の話をしていくよ〜!👩💻
PyPIへの自動リリースワークフロー
タグをプッシュするだけでPyPIに自動でリリースされるように、新しいワークフロー (.github/workflows/pypi-release.yml) を追加したよ。
name: Publish Python Package
on:
push:
tags:
- 'v*'
workflow_dispatch:
# ... (手動実行部分)
permissions:
contents: read
id-token: write # OIDC認証に必要🔥
jobs:
build-and-publish:
runs-on: ubuntu-latest
steps:
# ... (チェックアウトとビルド)
- name: Publish to PyPI
if: github.event_name == 'push' || github.event.inputs.release_target == 'pypi'
uses: pypa/gh-action-pypi-publish@release/v1
pypa/gh-action-pypi-publish を使って、v から始まるタグが作られたときに自動でPyPIに公開する仕組み。id-token: write を使ってPyPIのトラステッドパブリッシング(OIDC認証)で安全にリリースしてるのがポイント高い!
Hugging Face Spaceへのデプロイ機能
こっちもアツい新機能!Hugging Face Spaceへのデプロイを自動化するために、ワークフロー (huggingface-space-deploy.yml) とヘルパースクリプト (ensure_hf_space.py) を追加したよ。
ワークフローはこんな感じ👇
name: "🚀 Deploy to Hugging Face Space"
on:
workflow_dispatch:
inputs:
space_slug:
description: "Space repository slug (e.g. my-awesome-space)"
required: true
# ... (他の入力)
jobs:
deploy:
# ...
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Ensure Hugging Face Space exists
id: ensure_space
env:
# ... (入力値を環境変数にセット)
run: |
python .github/scripts/ensure_hf_space.py
- name: Push to Hugging Face Space
# ... (git pushする処理)
このワークフローの裏で動いてるのが、ensure_hf_space.py っていうPythonスクリプト。
# ... (一部抜粋)
def main() -> int:
# ...
try:
space_api_url = f"{API_BASE}/spaces/{owner}/{slug}"
exists = True
try:
request("GET", space_api_url, headers=headers)
except urllib.error.HTTPError as error:
if error.code == 404:
exists = False # Spaceがなかったらフラグを立てる
else:
raise
created = False
if not exists:
# Spaceが存在しない場合、Hugging Face APIを叩いて作成する
payload = { "name": slug, "type": "space", ... }
request("POST", f"{API_BASE}/repos/create", headers=headers, payload=payload)
created = True
# ...
このスクリプトが、デプロイ先のSpaceが存在するかどうかをHugging Face APIでチェックして、もし存在しなかったら自動で作ってくれるの。だから、ワークフローを実行するときに「あ、Space作り忘れてた!」ってなっても大丈夫。冪等性が担保されてて、マジ優秀!
ドキュメントの更新
PyPIに対応したから、READMEもイイ感じに更新したよ!
- PyPIのバージョンがわかるバッジを追加
-
pip installでのインストール方法を記載 - コマンド例から
uv runを削除して、もっとシンプルでわかりやすくしたよ
さらに、プロジェクトの全体像がわかるアーキテクチャ図も追加!

これで、外部サービスとの連携やワークフローの流れが一目でわかるようになったね!
まとめ
v0.7.0のアップデート、どうだった?
CLIツールが pip でサクッと使えるようになったし、Hugging Faceへのデプロイも自動化されて、gemini-actions-labがもっと便利で使いやすいプロジェクトに進化したよ!
これからも、みんなの開発体験がブチ上がるような機能をどんどん追加していくから、応援よろしくね!💖
📚 参考リンク
