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

Jos*_*zet 29 workflow github github-actions

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

Create Artifact Container failed: Artifact storage quota has been hit. Unable to upload any new artifacts
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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


更新

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

jak*_*inn 24

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

人工制品

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

工件和日志保留

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

另请参阅官方文档

  • 这似乎不再起作用了 (7认同)
  • 我已手动删除所有工件,但它不起作用。 (4认同)

ale*_*ras 14

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

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

在此输入图像描述

  • 不,我没有得到任何解决方案。现在我已经添加了付款方式并将限额设置为 1 美元,并且工作正常。 (3认同)

fre*_*nky 12

没有办法撤消。配额是每月的,因此您只需等待配额重置即可。

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

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

让我知道,我可以更新答案。

  • 这在过去可能是正确的,但绝对可以删除工件以释放配额。有关详细信息,请参阅@jakobinn 的答案。 (2认同)

小智 10

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

  - 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,
            })
          })
Run Code Online (Sandbox Code Playgroud)

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

  • 我通过手动运行添加代码https://github.com/aflopezbec/workflows/blob/main/.github/workflows/delete_artifacts_manually.yml (3认同)