Spaces:
Sleeping
Sleeping
| # この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 | |