You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Github Actions中解压大Zip文件报错的问题求助

问题

我正在搭建GitHub Action流水线,需要完成以下步骤:

  • 下载6个大小在500MB至7GB之间的Zip文件;
  • 将文件解压至指定目录;
  • 基于Dockerfile执行构建;
  • 将所需镜像推送至Azure容器镜像仓库。

但构建脚本运行时持续出现以下错误:

error: End-of-centdir-64 signature not where expected (prepended bytes?)
(attempting to process anyway)
warning [./bnk.zip]:  152 extra bytes at beginning or within zipfile
(attempting to process anyway)

当前使用的构建脚本如下:

# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Build Temenos Image From Dockerfile

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest 
    steps:
    
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v1
      with:
        java-version: 11
    - name: Download Temenos bnk
      run: wget -q http://example.com/artifactory/example-repo-local/bnk.zip
    - name: Download Temenos jboss
      run: wget -q  https://example.com/temenos-containers/jboss.zip
    - name: Decompress bnk
      uses: TonyBogdanov/zip@1.0
      with:
         args: unzip -qq ./bnk.zip -d ./R23

解决方案

1. 确保Zip文件下载完整

这类错误大概率是大文件下载中断导致的不完整,给wget添加断点续传和校验逻辑:

  • 用-c参数开启断点续传,避免重复下载已完成部分;
  • 如果源仓库提供文件哈希值,添加校验步骤确认文件完整性:
    - name: Download Temenos bnk
      run: |
        wget -c -q http://example.com/artifactory/example-repo-local/bnk.zip
        # 替换为实际的文件哈希值
        echo "abcdef1234567890abcdef1234567890abcdef12  bnk.zip" | sha256sum --check
    

2. 替换解压方式

第三方Zip Action对大文件支持可能不稳定,改用Ubuntu原生unzip命令,或更适配大文件的7z工具:

用原生unzip解压

- name: Decompress bnk
  run: |
    if [ ! -f ./bnk.zip ]; then
      echo "bnk.zip不存在" && exit 1
    fi
    unzip -qq ./bnk.zip -d ./R23 || { echo "解压失败" && exit 1; }

用7z解压(需先安装)

- name: Install 7zip
  run: sudo apt-get update && sudo apt-get install -y p7zip-full
- name: Decompress bnk with 7z
  run: 7z x ./bnk.zip -o./R23 -y

3. 缓存已下载的Zip文件

用GitHub Action的缓存功能避免重复下载大文件,节省时间同时降低下载失败概率:

- name: Cache Temenos Zip files
  uses: actions/cache@v3
  with:
    path: |
      ./bnk.zip
      ./jboss.zip
      # 补充其他4个Zip文件的路径
    key: temenos-zips-${{ github.sha }}

4. 验证源文件完整性

如果上述方法无效,手动下载bnk.zip到本地尝试解压,确认文件本身是否损坏。如果本地也报错,联系源仓库获取正确的Zip文件。

内容的提问来源于stack exchange,提问作者DaviesTobi alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:33:15