
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个用于帮助删除工作流制品的GitHub Action。
另请参见 https://github.com/jimschubert/delete-artifacts%E3%80%82
该Action旨在帮助GitHub仓库管理工作流制品,通过多种筛选条件(如名称、大小、运行ID、正则表达式匹配、活跃时间等)删除不需要的制品,从而优化仓库存储使用,尤其适用于私有仓库以控制存储成本。
GITHUB_TOKEN** 必需 **默认值:${{github.token}}
用于访问GITHUB_REPOSITORY输入中定义的仓库的GitHub令牌。
建议https://github.com/settings/tokens/new%E5%B9%B6%E6%8E%88%E4%BA%88%E6%9C%80%E5%B0%8F%E6%9D%83%E9%99%90%EF%BC%88%E5%A6%82%60public_repo%60%EF%BC%89%E3%80%82%E5%BC%BA%E7%83%88%E5%BB%BA%E8%AE%AE%E4%B8%BAGitHub%E4%BB%A4%E7%89%8C%E4%BD%BF%E7%94%A8%E6%9C%8D%E5%8A%A1%E8%B4%A6%E6%88%B7%E3%80%82
https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets
GITHUB_REPOSITORY** 必需 **默认值:${{github.repository}}
目标GitHub仓库,格式为owner/repo。
run_id
可选
特定的Actions运行标识符。可用于指定当前运行并进行运行后清理。
min_bytes** 必需 **默认值:"0"
最小文件大小(字节)。默认值为"0",表示匹配所有文件。
如果希望避免删除所有文件,建议应用其他筛选条件(如名称或模式)。
注意 该值必须是带引号的整数。
max_bytes
可选
最大文件大小(字节)。如果未指定,则无限制。
当存在许多小制品而希望保留特定大制品时,此选项非常有用。
注意 该值必须是带引号的整数。
artifact_name
可选
要删除的特定制品名称。如果未指定,可能导致删除所有制品。
pattern
可选
POSIX正则表达式。例如,当存在具有共同前缀或后缀的矩阵制品时非常有用。
active_duration
可选
定义制品被视为"活跃"且不会被删除的持续时间字符串。
此设置可用于避免删除当前或最近运行的制品(如指定"10m"),或允许在一段时间内调试制品(如指定"23h59m")。在使用其他激进删除设置时,此选项充当制品的保留期。
格式遵循https://golang.org/pkg/time/#ParseDuration%E8%A7%84%E8%8C%83%E3%80%82
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: # 参见 https://docs.github.com/en/rest/reference/repos#create-a-repository-dispatch-event # 这需要个人访问令牌(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 许可证 授权。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务