web-dev-qa-db-ja.com

Firebaseホスティングでデプロイされた古いバージョンをきれいにする方法は?

Firebaseにデプロイするたびに、新しいデプロイバージョンがホストされるため、ロールバックして誰がデプロイされたかを確認できます。これは、展開するすべてのファイルが保存されるたびに、より多くのスペースを占有することを意味します。

デプロイされた各バージョンを1つずつ手動で削除する以外に、これらの不要なファイルを自動的に削除する方法はありますか?

31
Pier

Firebasefinallyはこのためのソリューションを実装しました。

保持されるバージョンの制限を設定できるようになりました。

https://firebase.google.com/docs/hosting/deploying#set_limit_for_retained_versions

0
Pier

正解です。 Firebase Hostingコンソールを使用して、古い展開バージョンを1つずつ削除する必要があります。

これを行う方法は他にないので、Firebase Hostingコンソールで複数のデプロイ済みバージョンの削除を有効にするために 機能要求 を提出することをお勧めします。

更新:

ここで投票できます(スパム+1を避け、反応を使用してください) https://github.com/firebase/firebase-tools/issues/215#issuecomment-3142117 は、チーム(バッチ削除、Xバージョンのみを保持、公開日<Yのバージョンを保持)

29
looptheloop88

このスクリプトはまだ非常に強固ではないため、自己責任で使用してください。後で更新しようとしますが、今のところはうまくいきました。ボタンをクリックして展開されたアイテムを1つずつ削除するJavaScriptだけです。

var deleteDeployment = function(it) {
    it.click()
    setTimeout(function() {
        $('.md-dialog-container .delete-dialog button.md-raised:contains("Delete")').click()
    }, 300)
}
$('.h5g-hist-status-deployed').map((i, a) => $(a).parent()).map((i, a) => $(a).find('md-menu button:contains(Delete)')).each((i, it) => {
    setTimeout(function() {
        deleteDeployment(it)
    }, (i + 1) * 2000)
})
13
AAverin

2019年3月更新

現在、適切な解決策があります: "Version history settings"これにより、最新のXバージョンを保持できます。

https://support.google.com/firebase/answer/9242086?hl=en


2019年2月更新

Google従業員による確認@ github.com/firebase/firebase-tools/issues/...

積極的に取り組んでいます。 ????

????????????


読み続ける前に:

ここで投票できます(+1スパムを避け、反応を使用してください) https://github.com/firebase/firebase-tools/issues/215#issuecomment-3142117 は、チーム


だから、Chrome Devツールを使用して、複数のバージョンを削除する方法を見つけました。削除されたバージョン以来、注意して進めてください復元できません。UIを使用するときのような警告は表示されません)。

手順1.バージョンリストを取得します。

  1. Open Chrome Dev Tools(可能性がわからない場合は、Firebaseのチームによる適切な解決策を待つ必要があります)。
  2. Firebaseのコンソールを開き、[ホスティング]タブに移動します。
  3. CDTの[ネットワーク]タブに移動し、Websocketsフィルターを使用します。
  4. .ws?v=5&ns=firebaseという名前のリクエストを選択します
  5. 「フレーム」タブを開きます
  6. 退屈な部分があります。「長さ」の値が最も高いフレームを選択してください。 (データに応じて、2-nフレームになる可能性があります。私の場合、長さ14k〜16kの3フレームです)
  7. フレームの各データを順番に貼り付けます(有効なJSONオブジェクトが形成されます)。
  8. データの抽出:いくつかの方法があります。 CDTのコンソールでシンプルなJSを選択しました。
    var jsonString = '...';
    var json = JSON.parse(jsonString);
    var ids = Object.keys(json.d.b.d);

ステップ2.リクエストを実行する

ほぼそこに:P

IDを取得したら、次のリクエストを実行します。

削除 https://firebasehosting.clients6.google.com/v1beta1/sites/PROJECT_NAME/versions/-VERSION_ID?key=KEY

Sublime(リクエスト文字列を作成するため)+ Pawを使用しました。

「KEY」は、CDTのリクエストからコピーできます。 FirebaseのWeb APIキーと一致しません

=>リクエストを実行する前に、Firebaseが提供するテーブルから削除したくないバージョンに注意してください。 (ウェブサイトにリストされている各バージョンには、メールの下にIDの最後の6桁があります)

(スクリーンショットはすべてぼかしと少しの作業が必要になるため、提供されませんでした)

8
nathan

セレクターが現在のDOM構造とホスティングダッシュボードのクラスに依存しているため、これは少し脆弱かもしれませんが、私にとってはうまくいきます!

注:このスクリプト(コンソールから実行する場合)またはブックマークレットは、現在のビューのすべての行をクリックして削除を確認します。現在の展開で[削除]をクリックしても、削除されないことは確かです。

コンソールで実行するための機能:

let deleteAllHistory = () => {
  let deleteBtns = document.querySelectorAll('.table-row-actions button.md-icon-button');

  const deleteBtn = (pointer) => {
        deleteBtns[pointer].click();

        setTimeout(() => {
          document.querySelector('.md-open-menu-container.md-clickable md-menu-item:last-child button').click();

          setTimeout(() => {
            document.querySelector('.fb-dialog-actions .md-raised').click();

            if(pointer < deleteBtns.length - 1) {
              deleteBtn(pointer + 1);
            }
          }, 500);
        }, 500);
  };

  deleteBtn(0);
};

ブックマークレット:

javascript:(function()%7Bvar%20deleteBtns%3Ddocument.querySelectorAll('.table-row-actions%20button.md-icon-button')%2CdeleteBtn%3Dfunction(a)%7BdeleteBtns%5Ba%5D.click()%2CsetTimeout(function()%7Bdocument.querySelector('.md-open-menu-container.md-clickable%20md-menu-item%3Alast-child%20button').click()%2CsetTimeout(function()%7Bdocument.querySelector('.fb-dialog-actions%20.md-raised').click()%2Ca%3CdeleteBtns.length-1%26%26deleteBtn(a%2B1)%7D%2C500)%7D%2C500)%7D%3BdeleteBtn(0)%7D)()
2
Ben Feely

Nathanのオプションは素晴らしいですが、AutoHotkeyを使用した手っ取り早い方法があります。バージョンごとに約1秒で削除されるため、10秒でページをノックアウトできます。

#a::
    Click
    MouseGetPos, xpos, ypos
    MouseMove, xpos, ypos + 30
    Sleep 300
    Click
    Sleep 400
    Click 1456, 816
    MouseMove, xpos, ypos + 82
return
#s::
    Click
    MouseGetPos, xpos, ypos
    MouseMove, xpos, ypos - 820
return

画面の正確なピクセル値を変更する必要がある可能性が高いですが、これは私の1920x1080では完全に機能します。

Win + aは削除して次のエントリに移動し、Win + sは次のページに移動します。最初の3ドットメニューにマウスを置いて、それを始めましょう!

0
Alan Grainger