|
name: Deploy to Hugging Face Spaces |
|
|
|
on: |
|
push: |
|
branches: [ main, master ] |
|
pull_request: |
|
branches: [ main, master ] |
|
workflow_dispatch: |
|
|
|
jobs: |
|
deploy: |
|
runs-on: ubuntu-latest |
|
|
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
with: |
|
fetch-depth: 0 |
|
lfs: true |
|
|
|
- name: Setup Python |
|
uses: actions/setup-python@v4 |
|
with: |
|
python-version: '3.11' |
|
|
|
- name: Install dependencies |
|
run: | |
|
python -m pip install --upgrade pip |
|
pip install huggingface_hub |
|
|
|
- name: Configure Git for Hugging Face |
|
run: | |
|
git config --global user.email "[email protected]" |
|
git config --global user.name "GitHub Action" |
|
|
|
- name: Setup Hugging Face Token |
|
env: |
|
HF_TOKEN: ${{ secrets.HF_TOKEN }} |
|
run: | |
|
# Hugging Face Hubにログイン |
|
python -c " |
|
from huggingface_hub import login |
|
import os |
|
token = os.environ.get('HF_TOKEN') |
|
if token: |
|
login(token=token) |
|
print('✅ Hugging Face login successful') |
|
else: |
|
print('❌ HF_TOKEN not found in secrets') |
|
exit(1) |
|
" |
|
|
|
- name: Clone Hugging Face Space |
|
env: |
|
HF_TOKEN: ${{ secrets.HF_TOKEN }} |
|
run: | |
|
# Hugging Face Spaceをクローン |
|
git clone https://huggingface.co/spaces/kenken999/fastapi_django_main_live hf_space |
|
cd hf_space |
|
|
|
|
|
git remote set-url origin https://oauth2:[email protected]/spaces/kenken999/fastapi_django_main_live |
|
|
|
- name: Copy files and update Space |
|
run: | |
|
# 変更されたファイルをコピー |
|
echo "📂 Copying updated files..." |
|
|
|
|
|
if [ -f "app.py" ]; then |
|
cp app.py hf_space/ |
|
echo "✅ Copied app.py" |
|
fi |
|
|
|
|
|
if [ -f "requirements.txt" ]; then |
|
cp requirements.txt hf_space/ |
|
echo "✅ Copied requirements.txt" |
|
fi |
|
|
|
|
|
if [ -f "Dockerfile" ]; then |
|
cp Dockerfile hf_space/ |
|
echo "✅ Copied Dockerfile" |
|
fi |
|
|
|
|
|
if [ -f ".env.example" ]; then |
|
cp .env.example hf_space/ |
|
echo "✅ Copied .env.example" |
|
fi |
|
|
|
|
|
echo "📁 Copying project directories..." |
|
|
|
|
|
if [ -d "controllers" ]; then |
|
cp -r controllers hf_space/ |
|
echo "✅ Copied controllers/ directory" |
|
fi |
|
|
|
|
|
if [ -d "mysite" ]; then |
|
cp -r mysite hf_space/ |
|
echo "✅ Copied mysite/ directory" |
|
fi |
|
|
|
|
|
if [ -d "templates" ]; then |
|
cp -r templates hf_space/ |
|
echo "✅ Copied templates/ directory" |
|
fi |
|
|
|
|
|
if [ -d "static" ]; then |
|
cp -r static hf_space/ |
|
echo "✅ Copied static/ directory" |
|
fi |
|
|
|
|
|
echo "📝 Updating README.md with deployment info..." |
|
cat > hf_space/README.md << 'EOF' |
|
--- |
|
title: FastAPI Django Main Live |
|
emoji: 🚀 |
|
colorFrom: blue |
|
colorTo: purple |
|
sdk: docker |
|
pinned: false |
|
license: mit |
|
app_port: 7860 |
|
--- |
|
|
|
|
|
|
|
🚀 **AI-Driven Auto-Generation System with Gradio Interfaces** |
|
|
|
|
|
|
|
- ✅ **GitHub Actions自動デプロイ** |
|
- 🤖 **AI駆動の自動インターフェース生成** |
|
- 📊 **マルチモーダル機能(画像→UI生成)** |
|
- ⚡ **8-9個のGradioインターフェース自動統合** |
|
- 🎨 **動的UI生成システム** |
|
- 🌐 **Hugging Face Spaces完全対応** |
|
|
|
|
|
|
|
メインアプリケーションにアクセスして、自動検出されたインターフェースを利用してください: |
|
|
|
- `/` - メインダッシュボード |
|
- `/gradio` - 統合Gradioインターフェース |
|
- Auto-detected interfaces from controllers/ |
|
|
|
|
|
|
|
このスペースはGitHub Actionsで自動更新されます: |
|
- `main`ブランチへのプッシュで自動デプロイ |
|
- 手動実行も可能 |
|
- AI駆動システムの最新版を常に反映 |
|
|
|
|
|
|
|
Last deployed: $(date -u '+%Y-%m-%d %H:%M:%S UTC') |
|
EOF |
|
|
|
- name: Create or update app.py for Hugging Face Spaces |
|
run: | |
|
# 既存のapp.pyをそのまま使用(必要に応じてHugging Face用に調整) |
|
echo "✅ Using existing app.py for Hugging Face Spaces" |
|
|
|
|
|
cat > hf_space/.env.example << 'EOF' |
|
|
|
|
|
|
|
|
|
GROQ_API_KEY=your_groq_api_key_here |
|
HF_TOKEN=your_huggingface_token_here |
|
|
|
|
|
GRADIO_THEME=huggingface |
|
GRADIO_SERVER_NAME=0.0.0.0 |
|
GRADIO_NUM_PORTS=1 |
|
|
|
|
|
PYTHONUNBUFFERED=1 |
|
EOF |
|
|
|
- name: Update requirements.txt for Hugging Face Spaces |
|
run: | |
|
# 既存のrequirements.txtをベースに、Hugging Face Spaces用に調整 |
|
if [ -f "requirements.txt" ]; then |
|
echo "✅ Using existing requirements.txt" |
|
else |
|
# フォールバック用のrequirements.txtを作成 |
|
cat > hf_space/requirements.txt << 'EOF' |
|
fastapi==0.109.2 |
|
uvicorn[standard]==0.24.0 |
|
gradio>=3.0.0 |
|
python-dotenv>=0.19.0 |
|
python-multipart>=0.0.6 |
|
jinja2>=3.1.2 |
|
groq>=0.4.0 |
|
Pillow>=9.0.0 |
|
aiofiles>=0.8.0 |
|
EOF |
|
echo "✅ Created fallback requirements.txt for Hugging Face Spaces" |
|
fi |
|
|
|
- name: Create Dockerfile for Hugging Face Spaces |
|
run: | |
|
# 既存のDockerfileをベースに使用 |
|
if [ -f "Dockerfile" ]; then |
|
echo "✅ Using existing Dockerfile" |
|
# Hugging Face Spaces用にポート調整が必要な場合のみ修正 |
|
if ! grep -q "EXPOSE 7860" hf_space/Dockerfile; then |
|
echo "📝 Adjusting Dockerfile for Hugging Face Spaces port..." |
|
sed -i 's/EXPOSE [0-9]*/EXPOSE 7860/' hf_space/Dockerfile 2>/dev/null || true |
|
fi |
|
else |
|
# フォールバック用のDockerfileを作成 |
|
cat > hf_space/Dockerfile << 'EOF' |
|
FROM python:3.11-slim |
|
|
|
WORKDIR /code |
|
|
|
|
|
RUN apt-get update && apt-get install -y \ |
|
gcc \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
COPY ./requirements.txt /code/requirements.txt |
|
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt |
|
|
|
|
|
COPY . /code/ |
|
|
|
|
|
EXPOSE 7860 |
|
|
|
|
|
CMD ["python", "app.py"] |
|
EOF |
|
echo "✅ Created fallback Dockerfile for Hugging Face Spaces" |
|
fi |
|
|
|
- name: Deploy to Hugging Face Spaces |
|
run: | |
|
cd hf_space |
|
|
|
|
|
if [ -n "$(git status --porcelain)" ]; then |
|
echo "📤 Changes detected, deploying to Hugging Face Spaces..." |
|
|
|
|
|
git add . |
|
git commit -m "🚀 Auto-deploy from GitHub Actions $(date -u '+%Y-%m-%d %H:%M:%S UTC') |
|
|
|
✅ Features updated: |
|
- FastAPI Django Main Live (Latest) |
|
- AI-driven auto-generation system |
|
- Multiple Gradio interfaces auto-detection |
|
- Multimodal image-to-UI generation |
|
- Enhanced dynamic UI generation |
|
|
|
🤖 Deployed via GitHub Actions" |
|
|
|
|
|
git push origin main |
|
|
|
echo "✅ Successfully deployed to Hugging Face Spaces!" |
|
echo "🌐 Check your space at: https://huggingface.co/spaces/kenken999/fastapi_django_main_live" |
|
else |
|
echo "ℹ️ No changes detected, skipping deployment" |
|
fi |
|
|
|
- name: Deployment Summary |
|
run: | |
|
echo "## 🚀 Deployment Summary" >> $GITHUB_STEP_SUMMARY |
|
echo "- **Status**: ✅ Success" >> $GITHUB_STEP_SUMMARY |
|
echo "- **Target**: Hugging Face Spaces" >> $GITHUB_STEP_SUMMARY |
|
echo "- **Space URL**: https://huggingface.co/spaces/kenken999/fastapi_django_main_live" >> $GITHUB_STEP_SUMMARY |
|
echo "- **Timestamp**: $(date -u '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY |
|
echo "- **Features**: FastAPI Django Main Live with AI-driven interfaces" >> $GITHUB_STEP_SUMMARY |
|
echo "" >> $GITHUB_STEP_SUMMARY |
|
echo "### 📊 AI-Driven System Features" >> $GITHUB_STEP_SUMMARY |
|
echo "- ✅ Auto-detection of Gradio interfaces" >> $GITHUB_STEP_SUMMARY |
|
echo "- ✅ Multimodal image-to-UI generation" >> $GITHUB_STEP_SUMMARY |
|
echo "- ✅ Dynamic React/Vue.js code generation" >> $GITHUB_STEP_SUMMARY |
|
echo "- ✅ Weather forecast AI integration" >> $GITHUB_STEP_SUMMARY |
|
echo "- ✅ Frontend generator with smart analysis" >> $GITHUB_STEP_SUMMARY |
|
|