[GitHub Actions]:创建 Artifact 容器失败:已达到 Artifact 存储配额。无法上传任何新工件

问题描述 投票:0回答:6

我有一个 GitHub 工作流程,可以为我的 Flutter 应用程序创建 APK。直到最近这一切都很好,我似乎已经耗尽了某种配额。现在,当工作流程运行时,我收到此错误:

Create Artifact Container failed: Artifact storage quota has been hit. Unable to upload any new artifacts

我认为删除所有工件会再次释放空间,所以我使用了另一个工作流程来实现这一点:

name: 'Delete old artifacts'

on:
  push:
    branches:
      - master
      - develop
  pull_request:
    branches:
      - master
      - develop

jobs:
  delete-artifacts:
    runs-on: ubuntu-latest
    steps:
      - uses: kolpav/purge-artifacts-action@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          expire-in: 0days

新的工作流程似乎正在运行,我不再在 GitHub UI 中看到旧文件。但是,在尝试运行 APK 工作流程时我仍然收到错误。有什么想法如何修复这个错误吗?


更新

我的 GitHub 说我已经用完包含的服务(免费版本)。有办法撤销吗?仅仅删除工件似乎还不够。

github workflow github-actions
6个回答
20
投票

您实际上可以删除旧的工件来绕过这个问题。只需转到您的操作,单击以前的构建并检查页面底部是否有存储的工件。有一个回收站图标,您可以单击将其删除。

您还可以指定 Github 何时自动为您删除旧工件。您进入“设置”->“操作”->“常规”并找到“工件和日志保留”。

请注意,Github 可能需要一些时间才能更新已完成的配额。

另请参阅官方文档


11
投票

无法撤消。配额是每月的,所以你只需等待配额重置即可。

Github Actions(运行时间)和 Github Storage(工件)应该有单独的配额。

对于 Github Actions,我知道它们对公共存储库是免费的,因此您可以更改存储库的可见性,至少在需要时可以暂时更改。至于 Github Storage,我不确定同样的技巧是否有效,从未测试过。

请告诉我,我可以更新答案。


8
投票

我设法通过在部署脚本中添加新步骤来阻止此错误:

  - name: Delete Old Artifacts
    uses: actions/github-script@v6
    id: artifact
    with:
      script: |
        const res = await github.rest.actions.listArtifactsForRepo({
          owner: context.repo.owner,
          repo: context.repo.repo,
        })

        res.data.artifacts
          .forEach(({ id }) => {
            github.rest.actions.deleteArtifact({
              owner: context.repo.owner,
              repo: context.repo.repo,
              artifact_id: id,
            })
          })

将其放在上传步骤的正上方,它将删除存储库以前的所有工件。


7
投票

2023 年 5 月。 存储库->设置->操作->常规->工件和日志保留

将天数设置为 1,这将删除旧的自动。并保存它。


3
投票

我设法通过在部署脚本中添加新步骤来阻止此错误:

要添加“删除旧工件”步骤,请确保您已在“设置”>“操作”>“常规”>“工作流程权限”中选择“读写权限”选项


0
投票

我对此感到非常沮丧。我们制作了一组脚本,可以:

  • 删除除存储库较新的 2 个标签之外的所有标签中的发布资产。
  • 删除所有先前提交的所有工件。

这个解决方法已经工作了一两个月,直到有一天我决定在我的 CI 构建和发布中包含 1 个新工件。我想:“它只有 30MB,所以我怀疑它会让我从(当前)0.3GB 消耗量超出允许的 0.5GB”。

所以我做到了......到目前为止一切顺利。但突然 5 天后,我得到:

  • 一封邮件说我已经超出配额了。
  • 我的 github 个人资料中的“账单和计划”部分宣布我的消耗量现在为 1.81 GB,这没有任何意义。 如果我点击“获取使用报告”按钮,我只会得到一个
    .csv
    文件,其中仅列出一行,其中告诉我使用该报告的存储库名称,但它没有指定它是否是工件、资产、或日志。

现在,在您批评不购买付费选项之前:我是一名独立开发者,尚未为受此影响的单一私人回购赚取任何收入。我的所有其他存储库都是开源的。

因此,我决定构建最肮脏的黑客攻击,但它有效并消除了所有的挫败感:一个将资产上传到第二个存储库的脚本,仅用于二进制文件。我已经成功地做到了,以便它用 --force 推动以摆脱以前的二进制文件(这样它们就不会存在于 git 历史记录中,并且不需要花费很长时间/PB 来下载/存储它)。

如果有足够的兴趣(只需投票)我可以将其开源,例如将其发布在 GitHubActions 市场中。

© www.soinside.com 2019 - 2024. All rights reserved.