web-dev-qa-db-ja.com

Herokuのgitサブモジュールから最新のコミットを自動的にプルする方法は?

ジョンホプキンス大学Gitリポジトリから取得したHeroku( http://www.rajcovid19.info )でホストされているCOVID-19レポートWebアプリを持っています。 Herokuに変更をプッシュするために使用するメインプロジェクトリポジトリのサブモジュールとしてリポジトリを追加しました。これにより、コンピューター上のCOVID-19リポジトリへの更新をプルし、それらの変更をHerokuにプッシュすることができます。ただし、COVID-19サブモジュールの最新のコミットを直接Herokuアプリにプルすることはできません。 GitPythonを使用しようとしましたが、変更をプルしようとするたびに、「無効なGitリポジトリ」エラーが発生します。

この問題の現在の解決策は、ラップトップでスクリプトを作成して、COVID-19リポジトリの変更を定期的にチェックし、Herokuアプリにプッシュすることです。

これは機能しますが、少なくとも毎日1回はラップトップを開く必要があります。

Herokuにサブモジュールへの最新のコミットを自動的にプルさせることは可能ですか?

編集:

Herokuによると、このサービスには「一時的なストレージ」があります。 Heroku Ephemeral Storage

これも同様に複雑になると思いますか?

動作しなかった私のGitPythonコードについては、次のとおりです。

GitPython 1

GitPython 2

あれは:

# Root directory for the COVID-19 Local repository root=os.getcwd()

if os. path.isdir(root+"/COVID-19"):
  root+="/COVID-19"
  repo=Repo(root) git=repo.git git. pull
else:
  root+="/COVID-19"
  os.system("git clone https://github.com/CSSEGISandData/COVID-19.git")

これは私のコンピューターで動作しますが、Herokuアプリで「無効なGitリポジトリ」エラーが発生します。私はいくつかのデバッグを行い、Herokuアプリでリポジトリのパスが正しいことを確認しましたが、役に立たないようでした。

6
Aniansh

https://help.heroku.com/RR520244/why-don-t-git-submodules-work-with-heroku-pipelines-review-apps-or-github-sync

gitサブモジュールはHerokuと互換性がありません。提供されているリンクを参照してください。


これは別の方法で解決する必要があります。

可能なアプローチ:

1.定期的にデータをプルしてプロジェクトに追加するスクリプトを記述します。

git subtree pull --prefix=data --squash --message="update covid data" https://github.com/CSSEGISandData/COVID-19.git master
git Push Origin HEAD

gitサブツリーはHerokuと互換性があります。このアプローチでは、VPSがあり、スクリプトをcronに追加する必要があります。 Cronは、特定の時間間隔で定期的に実行されるスクリプトを定義できる強力なツールです

2.アプリの起動時にZipまたはtar.gzをダウンロードし、解凍してデータを提供します。それを行うstartup.shスクリプトを作成する必要があり、最後のコマンドがプログラムを開始します。何かのようなもの:

curl -L https://api.github.com/repos/CSSEGISandData/COVID-19/tarball > data.tar.gz
cd data && rm -r ./*
tar -xzvf ../data.tar.gz
cd ..
python main.py

2番目の方法をお勧めします。データをバージョン対応にする場合は、最初の方法をお勧めします。

5
Tin Nguyen