# このGitHub Actionsのワークフローは、HuggingFaceのSpace(以下、Space)にデプロイを行うためのものです。 # 具体的には、GitHubのリポジトリをチェックアウトし、その内容をSpaceにgit pushします。 # 詳細な手順はHuggingFaceの公式ドキュメントを参照してください: https://huggingface.co/docs/hub/spaces-github-actions ## ワークフローの設定手順 # 1, HuggingFaceで「Fine-grained (custom)」タイプのアクセストークンを生成します。このトークンは認証に使用します。 # 生成はこちらから: https://huggingface.co/settings/tokens # 2, デプロイ時の環境設定を作成します。 # 「Settings」タブの「Environments」 > 「new Environment」 > Name に「production」を入力して新しい環境設定を作成します。 # Environments / Configure production画面で設定を行います。 # 2-1, Environment secretsの設定を行います。生成したアクセストークンと他の情報を環境変数として設定します。 # 設定する変数は以下の通りです: # HF_TOKEN: HuggingFaceで生成したアクセストークン # HF_USER_NAME: HuggingFaceのユーザー名 # HF_SPACE_NAME: Spaceの名前 # 2-2, Deployment branches and tagsでmainブランチのみに設定を行います。 # ブランチにmainを選択します。 # 2-3, Deployment protection rulesを設定します。 name: "Deploy" on: # mainブランチへのpushをトリガーにします。 push: branches: [ "main" ] # Actionsタブからワークフローの手動実行を許可します。 workflow_dispatch: jobs: build: uses: './.github/workflows/python-app.yml' sync-to-hub: needs: build # 'build'ジョブが成功した後にのみ'sync-to-hub'ジョブを開始します # 'concurrency'を使用して、同時に実行できるジョブの数を制限します。 # この設定により、同じワークフローの複数のジョブが同時に実行されるのを防ぎます。 # https://docs.github.com/ja/actions/using-workflows/workflow-syntax-for-github-actions#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow # トップレベルに'concurrency'記述時は、デッドロックが発生します。そのため、この位置で定義します。 # > Deploy # > Canceling since a deadlock for concurrency group 'Deploy-refs/heads/main' was detected between 'top level workflow' and 'build' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true runs-on: ubuntu-latest # productionの設定情報を使用します。これにより、デプロイ時の環境変数や環境保護ルールを適用できます。 environment: production steps: # GitHubのリポジトリをチェックアウトします。 - uses: actions/checkout@v4 with: fetch-depth: 0 lfs: true # チェックアウトしたコードをSpaceにgit pushします。 - name: Push to hub run: git push https://${{ secrets.HF_USER_NAME }}:${{ secrets.HF_TOKEN }}@huggingface.co/spaces/${{ secrets.HF_USER_NAME }}/${{ secrets.HF_SPACE_NAME }} main