
jimschubert/delete-artifacts-action一个用于帮助删除工作流制品的GitHub Action。
另请参见 jimschubert/delete-artifacts。
该Action旨在帮助GitHub仓库管理工作流制品,通过多种筛选条件(如名称、大小、运行ID、正则表达式匹配、活跃时间等)删除不需要的制品,从而优化仓库存储使用,尤其适用于私有仓库以控制存储成本。
GITHUB_TOKEN** 必需 **默认值:${{github.token}}用于访问GITHUB_REPOSITORY输入中定义的仓库的GitHub令牌。
建议创建新的个人访问令牌并授予最小权限(如public_repo)。强烈建议为GitHub令牌使用服务账户。
了解更多关于使用密钥的信息
GITHUB_REPOSITORY** 必需 **默认值:${{github.repository}}目标GitHub仓库,格式为owner/repo。
run_id可选
特定的Actions运行标识符。可用于指定当前运行并进行运行后清理。
min_bytes** 必需 **默认值:"0"最小文件大小(字节)。默认值为"0",表示匹配所有文件。
如果希望避免删除所有文件,建议应用其他筛选条件(如名称或模式)。
注意 该值必须是带引号的整数。
max_bytes可选
最大文件大小(字节)。如果未指定,则无限制。
当存在许多小制品而希望保留特定大制品时,此选项非常有用。
注意 该值必须是带引号的整数。
artifact_name可选
要删除的特定制品名称。如果未指定,可能导致删除所有制品。
pattern可选
POSIX正则表达式。例如,当存在具有共同前缀或后缀的矩阵制品时非常有用。
active_duration可选
定义制品被视为"活跃"且不会被删除的持续时间字符串。
此设置可用于避免删除当前或最近运行的制品(如指定"10m"),或允许在一段时间内调试制品(如指定"23h59m")。在使用其他激进删除设置时,此选项充当制品的保留期。
格式遵循go Duration规范。
log_level可选
指定自定义日志级别。
可选值:
dry_run可选
执行模拟运行。建议先执行模拟运行以确保配置正确。
该Action本身不输出任何参数。
制品在工作流完成后与工作流关联。可使用仓库调度来"启动"制品清理。
此步骤需要个人访问令牌,而非默认提供的GITHUB_TOKEN
首先在.github/workflows/generate.yml创建以下文件:
yamlname: 生成制品并触发清理 on: workflow_dispatch: inputs: size: description: '目标文件大小' required: true default: '1M' name: description: '制品名称' required: true default: 'artifact.bin' defaults: run: shell: bash jobs: # 此作业代表您的"标准"作业。注意该作业输出`github.run_id`作为在触发作业间传递变量的示例 generate: runs-on: ubuntu-latest continue-on-error: false outputs: # 我们可以在最终触发作业中跨作业使用输出 target_run_id: ${{ github.run_id }} steps: # 生成空字节文件(这可以是构建任务) - name: 生成文件 run: | truncate -s ${{ github.event.inputs.size }} ${{ github.event.inputs.name }} echo "已创建文件 ${{ github.event.inputs.name }} (${{ github.event.inputs.size }})" # 上传制品。制品在90天后过期,这可能会计入私有仓库的存储成本 - name: 上传制品为 ${{ github.event.inputs.name }} uses: actions/upload-artifact@v1 with: name: ${{ github.event.inputs.name }} path: ${{ github.event.inputs.name }} # 此示例通过单独的作业触发,以演示作业和工作流之间的变量传递,但该步骤也可存在于单个作业中。 trigger: runs-on: ubuntu-latest needs: generate continue-on-error: false steps: # 参见 [***] # 这需要个人访问令牌(PAT),工作流提供的GITHUB_TOKEN将无法工作。 - name: 仓库调度 uses: peter-evans/repository-dispatch@v1.0.0 with: # 这必须是个人访问令牌 token: ${{secrets.TRIGGER_TOKEN}} repository: ${{github.repository}} event-type: triggered-event # 负载属性可以是任何名称。注意size、base_name和run_id引用此工作流的输入和generate任务的输出 client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "size": "${{ github.event.inputs.size }}", "base_name": "${{ github.event.inputs.name }}", "run_id": "${{needs.generate.outputs.target_run_id}}"}'
在.github/workflows/cleanup.yml创建以下文件:
yamlname: 清理 on: repository_dispatch: types: - triggered-event jobs: # 演示如何按名称删除 delete-by-name: runs-on: ubuntu-latest continue-on-error: true steps: - name: 检出代码 uses: actions/checkout@v2 - name: 按名称删除制品 uses: jimschubert/delete-artifacts-action@v1 with: log_level: 'debug' artifact_name: '${{ github.event.client_payload.base_name }}' min_bytes: '0' # 演示如何按活跃时间删除 delete-by-retention-duration: needs: delete-by-name continue-on-error: true runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v2 - name: 按活跃时间删除制品(预期无删除) uses: jimschubert/delete-artifacts-action@v1 with: log_level: 'debug' min_bytes: '0' active_duration: '30m' - name: 休眠2分钟 run: | echo "休眠2分钟,然后使用1m30s的活跃时间" sleep 120 - name: 按活跃时间删除制品(预期有删除) uses: jimschubert/delete-artifacts-action@v1 with: log_level: 'debug' min_bytes: '0' active_duration: '1m30s' # 演示如何使用POSIX模式删除制品 delete-by-pattern: needs: delete-by-retention-duration continue-on-error: true runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v2 - name: 按模式删除 uses: jimschubert/delete-artifacts-action@v1 with: log_level: 'debug' min_bytes: '0' pattern: '\.pat' # 演示如何使用run id删除制品 # 可用于整体清理 delete-by-runId: needs: [delete-by-pattern] continue-on-error: true runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v2 - name: 按run id删除 if: ${{ github.event.client_payload.run_id }} uses: jimschubert/delete-artifacts-action@v1 with: log_level: 'debug' min_bytes: '0' run_id: '${{ github.event.client_payload.run_id }}'
以下示例每周在特定时间清理所有制品。
在仓库中创建.github/workflows/cleanup.yml文件:
yamlname: 每周清理 on: schedule: - cron: "0 18 * * 6" jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: 每周制品清理 uses: jimschubert/delete-artifacts-action@v1 with: log_level: 'error' min_bytes: '0'
本项目基于 Apache 2.0 许可证 授权。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务