File size: 3,292 Bytes
ad280f2
 
 
 
a3a5c3f
ad280f2
a86e8f9
 
 
 
ad280f2
 
 
a86e8f9
 
 
 
0313122
 
ad280f2
0313122
 
d8f6e54
e69a2db
0313122
 
472deed
 
 
e69a2db
472deed
3d3bbe6
 
 
a86e8f9
 
 
3d3bbe6
 
 
0313122
a86e8f9
83b3608
0313122
ad280f2
1b73e22
e69a2db
 
1dc487d
ad280f2
e69a2db
a86e8f9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# この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