GitHub Actions中delete-artifact@v1删除构件失败问题排查
问题:GitHub Actions构件删除步骤触发404错误导致流水线失败
近期Azure/GitHub Actions部署流水线在构件部署后执行删除操作时失败,错误日志如下:
Run geekyeggo/delete-artifact@v1 with: name: net-app failOnError: true env: AZURE_HTTP_USER_AGENT: Failed to list artifacts; status code 404 Error: Failed to load artifacts; debug logs may be available.
工作流脚本数月未修改,此前该步骤仅输出警告:Warning: Unable to delete artifact "net-app"; the artifact was not found.,如今直接触发错误导致流水线终止。
当前工作流逻辑:build-net-app任务上传名为net-app的构件,deploy-net-app任务下载后部署至Azure Web App,最后调用delete-artifact@v1删除该构件,但构件未被自动删除,且删除步骤报错。
原因分析
- Action版本兼容性问题:当前使用的
geekyeggo/delete-artifact@v1是旧版本,而构件上传/下载使用的是actions/upload-artifact@v4/actions/download-artifact@v4。GitHub的Artifact API在后续版本中存在更新,旧版本的delete-artifact无法适配新API,导致列表构件时返回404错误。 - 错误处理逻辑变更:旧版本
delete-artifact在找不到构件时仅输出警告,但GitHub侧或action内部的逻辑变更,结合failOnError: true的配置,直接触发流水线失败。
修复方案
方案1:升级delete-artifact至最新版本
将删除步骤的action版本从v1升级到最新稳定版(当前为v5),新版本适配GitHub最新的Artifact API,能正确识别并删除构件。修改后的删除步骤如下:
- name: Delete artifact uses: geekyeggo/delete-artifact@v5 with: name: net-app failOnError: true
方案2:调整错误处理策略(临时缓解)
如果暂时无法升级action版本,可将failOnError设为false,这样即使找不到构件也只会输出警告,不会终止流水线。但此方案无法解决构件无法删除的核心问题:
- name: Delete artifact uses: geekyeggo/delete-artifact@v1 with: name: net-app failOnError: false
额外检查:构件名称一致性
虽然当前上传和删除的构件名称均为net-app,但build-net-app任务中定义了环境变量ArtifactName: net-app-${{ github.run_number }}却未使用,若后续需要按运行编号区分构件,需统一上传和删除步骤的构件名称,避免出现名称不匹配的问题。
内容的提问来源于stack exchange,提问作者Lucas Rappette
相关产品推荐
相关产品推荐

