如何在Firebase托管中清除旧部署的版本?

时间:2016-08-20 01:31:54

标签: firebase firebase-hosting

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

除了逐个手动删除每个部署版本外,是否有任何自动清理这些无用文件的方法?

8 个答案:

答案 0 :(得分:29)

你是对的。您需要使用Firebase托管控制台逐个删除旧部署的版本。

没有其他方法可以执行此操作,因此我建议您提交feature request以启用在Firebase托管控制台中删除多个已部署版本。

<强>更新

您可以在此处投票(请避免+1垃圾邮件,请使用反应)https://github.com/firebase/firebase-tools/issues/215#issuecomment-314211730以获取团队提出的替代方案之一(批量删除,仅保留X版本,保留已发布日期&lt; Y的版本)< / p>

答案 1 :(得分:13)

此脚本尚未超级固定,因此使用它需要您自担风险。我稍后会尝试更新它,但现在为我工作。 只需点击一些按钮即可逐个删除已部署的项目。

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

答案 2 :(得分:6)

更新Mar / 2019

现在有一个合适的解决方案:&#34; 版本历史记录设置&#34;这允许保留最后的X版本。

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

UPDATE Feb / 2019

由Google员工@ github.com/firebase/firebase-tools/issues/...确认

  

正在积极开展工作。

继续阅读之前:

您可以在这里投票(请避免+1垃圾邮件,使用反应)https://github.com/firebase/firebase-tools/issues/215#issuecomment-314211730以获取团队提出的替代方案

因此,通过使用Chrome Dev工具,我找到了删除多个版本的方法。请记住,它需要一些工作(小心,因为已删除的版本无法恢复,并且您不会收到任何警告,例如使用用户界面时)。

步骤1.检索版本列表。

  1. 打开Chrome开发工具(如果您不知道如何应该等待Firebase团队的正确解决方案)。
  2. 打开Firebase的控制台,然后转到&#34;托管&#34;标签。
  3. 转到&#34;网络&#34; CDT上的选项卡并使用Websockets过滤器。
  4. 选择名为.ws?v=5&ns=firebase
  5. 的请求
  6. 打开&#34;框架&#34;标签
  7. 现在是繁琐的部分:选择具有最高&#34;长度&#34;值。 (根据您的数据,它可能是2-n帧。在我的情况下,3帧,长度为14k-16k)
  8. 按顺序粘贴每个框架的数据(这将形成一个有效的JSON对象)。
  9. 提取数据:有几种方法可以做到这一点。我在CDT的控制台上选择了简单的JS。
  10.     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。

    &#34; KEY&#34;可以从任何CDT的请求中复制。它与Firebase的Web API密钥

    不匹配

    =&GT;在执行请求之前:记下您不想从Firebase提供的表格中删除的版本。 (网站上列出的每个版本都包含您电子邮件中最后6位数的ID)

    (屏幕截图没有提供,因为所有这些都需要模糊和一些工作)

答案 3 :(得分:2)

由于选择器依赖主机控制台上的当前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);
};

小书签:

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)()

答案 4 :(得分:0)

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点菜单上然后继续操作吧!

答案 5 :(得分:0)

Firebase 最终为此实现了一个解决方案。

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

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

答案 6 :(得分:0)

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

答案 7 :(得分:-2)

我不知道它可以帮到你,但我可以删除来​​自&#34; hosting&#34;的旧部署。像这样的菜单: Delete or rollback old deployment