web-dev-qa-db-fra.com

Comment nettoyer les anciennes versions déployées dans l'hébergement Firebase?

Chaque fois que vous déployez sur Firebase, une nouvelle version de déploiement est créée afin que vous puissiez revenir en arrière et voir qui a été déployé. Cela signifie que chaque fois que chaque fichier que vous déployez est stocké et occupe plus d'espace.

Outre la suppression manuelle de chaque version déployée une par une, existe-t-il un moyen automatisé de nettoyer ces fichiers inutiles?

31
Pier

Firebase a finalement implémenté une solution pour cela.

Il est désormais possible de définir une limite de versions conservées.

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

0
Pier

Vous avez raison. Vous devrez supprimer les anciennes versions déployées une par une à l'aide de la console d'hébergement Firebase.

Il n'y a pas d'autre moyen de le faire, donc je vous suggère de déposer un demande de fonctionnalité pour permettre la suppression de plusieurs versions déployées dans la console d'hébergement Firebase.

Mise à jour:

Vous pouvez voter ici (veuillez éviter +1 spam, utilisez des réactions) https://github.com/firebase/firebase-tools/issues/215#issuecomment-3142117 pour l'une des alternatives proposées par le équipe (suppression par lots, conserver uniquement les versions X, conserver les versions avec date de publication <Y)

29
looptheloop88

Ce script n'est pas encore super solide, alors utilisez-le à vos risques et périls. J'essaierai de le mettre à jour plus tard, mais j'ai travaillé pour moi pour l'instant. Juste un peu de javascript pour cliquer sur les boutons pour supprimer les éléments déployés un par un.

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

MISE À JOUR mars/2019

Il y a maintenant une bonne solution: " Paramètres de l'historique des versions" qui permet de conserver les dernières versions X.

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


MISE À JOUR fév/2019

Confirmé par un employé de Google @ github.com/firebase/firebase-tools/issues/...

Il est activement en cours d'élaboration. ????

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


Avant de continuer la lecture:

Vous pouvez voter ici (veuillez éviter le spam + 1, utilisez des réactions) https://github.com/firebase/firebase-tools/issues/215#issuecomment-3142117 pour l'une des alternatives proposées par le équipe


Donc, en utilisant Chrome Outils de développement, j'ai trouvé un moyen de supprimer plusieurs versions. Gardez à l'esprit que cela nécessite un peu de travail (procédez avec prudence car versions supprimées ne peut pas être restauré et vous n'obtiendrez aucun avertissement comme lors de l'utilisation de l'interface utilisateur).

Étape 1. Récupération de la liste des versions.

  1. Ouvrez Chrome Dev Tools (si vous ne savez pas comment vous pouvez probablement attendre une solution appropriée de l'équipe de Firebase).
  2. Ouvrez la console de Firebase et accédez à l'onglet "Hébergement".
  3. Accédez à l'onglet "Réseau" sur CDT et utilisez le filtre Websockets.
  4. Sélectionnez la demande nommée .ws?v=5&ns=firebase
  5. Ouvrez l'onglet "Cadres"
  6. Vient maintenant la partie fastidieuse: Sélectionnez les images avec la valeur de "longueur" la plus élevée. (Selon vos données, il peut s'agir de 2 trames. Dans mon cas, 3 trames d'une longueur de 14k à 16k)
  7. Collez chacune des données du cadre dans l'ordre (qui formera un objet JSON valide).
  8. Extraire les données: Il existe plusieurs façons de le faire. J'ai opté pour un simple JS sur la console de CDT.
    var jsonString = '...';
    var json = JSON.parse(jsonString);
    var ids = Object.keys(json.d.b.d);

Étape 2. Exécution des demandes

Presque là: P

Maintenant que vous disposez des ID, effectuez les requêtes suivantes:

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

J'ai utilisé Sublime (pour créer les chaînes de requête) + Paw.

La "CLÉ" peut être copiée à partir de n'importe quelle demande du CDT. Il ne correspond pas à la clé API Web de Firebase

=> Avant d'effectuer les requêtes: notez la version que vous ne souhaitez pas supprimer du tableau fourni par Firebase. (Chaque version répertoriée sur le site Web a les 6 derniers chiffres de son ID sous votre e-mail)

(Les captures d'écran n'étaient pas fournies car elles nécessiteraient toutes un flou et un peu de travail)

8
nathan

Cela peut être un peu fragile en raison de la dépendance des sélecteurs à la structure et aux classes DOM actuelles sur le tableau de bord d'hébergement, mais cela fonctionne pour moi!

REMARQUE: ce script (s'il est exécuté à partir de la console) ou bookletlet cliquera et confirmera la suppression sur toutes les lignes de la vue actuelle. Je suis assez certain que même si vous cliquez sur supprimer sur le déploiement actuel, il ne le supprimera pas.

Fonction pour exécuter dans la console:

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);
};

Bookmarklet:

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

L'option de Nathan est excellente, mais j'ai une méthode rapide et sale en utilisant AutoHotkey. La suppression prend environ une seconde par version, vous pouvez donc supprimer une page en 10 secondes.

#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

Vous devrez probablement modifier les valeurs de pixels exactes de votre écran, mais cela fonctionne parfaitement sur mon 1920x1080.

Win + a est supprimer et passer à l'entrée suivante, Win + s est passer à la page suivante. Mettez votre souris sur le premier menu à 3 points et foncez!

0
Alan Grainger