安装本地TGZ包时BitBucket管道完整性检查失败

问题描述 投票:0回答:1

我们有一个如this SO thread中所述的设置:

  • 客户端项目依赖于同一存储库中存储为 .tgz 文件的本地包。编辑后的包名称为

    @company/my-library
    ,存储库中的包文件路径为
    local-packages/company-my-library-2.0.0.tgz
    ,客户端项目位于
    client/
    并依赖于它作为
    "@company/my-library": "file:../local-packages/company-my-library-2.0.0.tgz"

  • npm install
    在 BitBucket 管道中运行时,它会失败并显示以下消息。前两条消息实际上出现了两次。为了便于阅读,对 sha512 代码进行了编辑:

npm 警告 @company/my-library@file:/opt/atlassian/pipelines/agent/build/local-packages/company-my-library-2.0.0.tgz 的 tarball tarball 数据 (sha512-[相同- Package-Lock])似乎已损坏。再试一次。

npm warn tar TAR_BAD_ARCHIVE:无法识别的存档格式

npm 错误代码 EINTEGRITY

使用 sha512 时,npm 错误 sha512-[Same-As-Package-Lock] 完整性校验和失败:想要 sha512-[Same-As-Package-Lock] 但得到 sha512-[Another-Checksum]。 (131 字节)

我们尝试过的事情:

  • 在开发计算机上,在 Windows 和 WSL Ubuntu 上卸载并重新安装本地软件包,同样在强制执行

    npm cache clean --force
    命令后:package-lock 中计算的校验和保持不变。

  • 在BitBucket管道中,打印node.js和npm版本:它们实际上与开发机器相同:

    环境 node.js npm
    开发机 v18.20.3 10.7.0
    管道 v18.20.4 10.7.0

由于某种原因,npm 在 pipeline 中计算的校验和与在开发环境中计算的校验和不同。有一条可疑的初始消息:“压缩包数据......似乎已损坏”,就好像文件未正确读取一样。但它位于同一个存储库中,因此不应该出现文件未正确下载的情况。

我们在 S.O. 上查看过。和 BitBucket 社区有关本地包、TAR_BAD_ARCHIVE、错误校验和的问题,即使在 GitHub Actions 中也是如此,但没有运气。

为什么会出现这种情况? TA

bitbucket npm-install bitbucket-pipelines
1个回答
0
投票

我想我们至少找到了根本原因(像往常一样,在S.O.中写下问题后,新的事情就会浮现在你的脑海中)。

在 BitBucket 管道脚本中,我们列出了本地包目录的内容 (

ls -l /opt/atlassian/pipelines/agent/build/local-packages/
):显示的文件大小为 131 字节,而在开发计算机上,.tgz 文件超过 500kb。

然后在管道中我们打印了包文件内容并... tadaaa:

version https://git-lfs.github.com/spec/v1
oid sha256:5cdaa2fbc2839fb5a46b7108d01b74185e1fa9623d452356d4de761a0903e03e
size 547575

这是一个 git LFS 参考文件。我们的存储库(本地和 bitbucket 上)启用了 LFS,并且这些二进制包存储为 LFS。

由于某种原因,BitBucket 管道尚未启用 Git LFS。现在开始下一个任务...

© www.soinside.com 2019 - 2024. All rights reserved.