1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【リリースノート】gemini-actions-lab v0.7.0 - PyPIリリースとHugging Faceデプロイ機能の追加

Posted at

imagen-4-ultra_2025-09-30T07-21-26-369Z_Create_a_minimalist_typographic_illustration_displ_1.png

はじめに

やっほー!みんな、開発楽しんでる?✨
AIを使ったGitHub上での開発自動化プロジェクト「gemini-actions-lab」から、v0.7.0のリリース情報をお届けするよっ!

今回のアップデートは、CLIツールの使いやすさとデプロイの自動化がマジでパワーアップしたから、ぜひチェックしてね😉

主な変更点

今回のリリースでのイケてるポイントはこの3つ!

  1. CLIツールがPyPIに公開!
    pip install gemini-actions-lab-cli ってコマンド一発で、誰でも簡単にCLIツールをインストールできるようになったよ!もうリポジトリをクローンして…みたいな手間はいらないってワケ。超楽ちんじゃん?😎

  2. Hugging Face Spaceへの自動デプロイ機能を追加!
    新しく追加されたGitHub Actionsワークフロー (huggingface-space-deploy.yml) を使えば、Hugging Face Spaceに自動でデプロイできるようになったんだ。デモアプリとかをサクッと公開したいときにマジ便利!

  3. プロジェクトの全体像がわかるアーキテクチャ図を追加!
    「このプロジェクト、全体的にどうなってんの?」っていうのが一目でわかるように、イケてるアーキテクチャ図をドキュメントに追加したよ。これで、プロジェクトの理解がもっと深まるはず!

技術的な詳細

ここからは、ちょいディープな技術の話をしていくよ〜!👩‍💻

PyPIへの自動リリースワークフロー

タグをプッシュするだけでPyPIに自動でリリースされるように、新しいワークフロー (.github/workflows/pypi-release.yml) を追加したよ。

.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) を追加したよ。

ワークフローはこんな感じ👇

.github/workflows/huggingface-space-deploy.yml
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スクリプト。

.github/scripts/ensure_hf_space.py
# ... (一部抜粋)
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がもっと便利で使いやすいプロジェクトに進化したよ!

これからも、みんなの開発体験がブチ上がるような機能をどんどん追加していくから、応援よろしくね!💖


📚 参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?