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?
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
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)
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)
})
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).
.ws?v=5&ns=firebase
var jsonString = '...';
var json = JSON.parse(jsonString);
var ids = Object.keys(json.d.b.d);
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)
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)()
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!