在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
相关产品推荐
相关产品推荐

