如何在Firebase主机中清理旧的部署版本?

如何在Firebase主机中清理旧的部署版本?,firebase,firebase-hosting,Firebase,Firebase Hosting,每次部署到承载新部署版本的Firebase时,都会创建一个新的部署版本,以便您可以回滚并查看部署了谁。这意味着每次部署的每个文件都会被存储并占用更多空间 除了一个接一个地手动删除每个部署的版本外,还有没有自动清理这些无用文件的方法?你说得对。您需要使用Firebase主机控制台逐个删除旧的部署版本 没有其他方法可以做到这一点,因此我建议您提交一个文件,以便在Firebase主机控制台中删除多个部署的版本 更新: 您可以在此处投票(请避免+1垃圾邮件,使用反应)选择团队提出的备选方案之一(批量删除

每次部署到承载新部署版本的Firebase时,都会创建一个新的部署版本,以便您可以回滚并查看部署了谁。这意味着每次部署的每个文件都会被存储并占用更多空间


除了一个接一个地手动删除每个部署的版本外,还有没有自动清理这些无用文件的方法?

你说得对。您需要使用Firebase主机控制台逐个删除旧的部署版本

没有其他方法可以做到这一点,因此我建议您提交一个文件,以便在Firebase主机控制台中删除多个部署的版本

更新:


您可以在此处投票(请避免+1垃圾邮件,使用反应)选择团队提出的备选方案之一(批量删除,仅保留X个版本,保留发布日期我不知道它是否能帮助您,但我可以从“托管”菜单中删除旧部署,如下所示:

2019年3月更新 现在有了一个合适的解决方案:“版本历史设置”,它允许保留最后的X版本


更新日期:2019年2月

由谷歌员工确认@


目前正在积极进行这项工作 Nathan的选择很好,但我有一个使用AutoHotkey的快速而肮脏的方法。删除每个版本大约需要一秒钟的时间,因此您可以在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点菜单上,然后开始

此脚本还不是超级可靠的,因此使用它的风险自负。我稍后会尝试更新它,但现在为我工作。 只需一些javascript,单击按钮即可逐个删除已部署的项目

var deleteDeployment=函数(it){
它。点击()
setTimeout(函数(){
$('.md dialog container.delete dialog button.md引发:包含(“删除”))。单击()
}, 300)
}
$('.h5g hist status deployed').map((i,a)=>$(a.parent()).map((i,a)=>$(a.find('md-menu按钮:包含(删除)'))。每个((i,it)=>{
setTimeout(函数(){
删除部署(it)
},(i+1)*2000年)
})

由于选择器依赖于主机控制面板上的当前DOM结构和类,这可能有点脆弱,但对我来说是可行的

注意:此脚本(如果从控制台执行)或bookmarklet将单击并确认删除当前视图中的所有行。我相当肯定,即使您在当前部署上单击“删除”,它也不会删除它

用于在控制台中运行的功能:

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

Firebase最终实施了一个解决方案

现在可以设置保留版本的限制

编辑:上一个链接已过时。以下是一个新的链接:


在发布历史记录表的顶部,单击工具栏并选择“版本历史记录设置”。设置为所需数量,然后单击“保存”。这将自动删除较旧的部署。

我已经填写了一个功能请求,但我怀疑它是否能够实现。哦,好吧,哦,痛苦——就我而言,我有218个!(单击菜单,单击删除,单击删除…单击菜单,单击删除,单击删除…重复218次…@Pier请链接到您创建的功能请求,以便我们可以跟踪它。谢谢编辑:我看到firebase上的功能请求不是公开的。“这有点……不太好。”李维,firebase工具回购协议也报道了这一点。给每个人:你可以在这里投票(请避免+1垃圾邮件,使用反应)团队提出的备选方案之一(批量删除,只保留X个版本,保留发布日期fetch(`https://firebasehosting.clients6.google.com/v1beta1/sites/${projectID}/versions/${versionID}?key=${key}`,{method:“DELETE”,credentials:“include'})但是,在运行时,它会显示“请求缺少所需的身份验证凭据”。这很奇怪,因为“网络”选项卡显示请求是相同的。(除了两块曲奇饼的微小变化,它们似乎无关)@Venryx你明白了吗?不,对不起。我最终使用了上面@AAverin的解决方案,效果很好。太棒了。这就是答案。注意这将删除域:|这将在五分钟内清除3GB的旧部署。非常感谢。酷!你让我的生活更轻松。这是截至2019年3月的答案:
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)()