lerna 错误! ZlibError:zlib:在 lerna 中发布包时块类型无效

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

我正在尝试使用

lerna publish
发布我的包,如下所示:

lerna publish prerelease --preid daily --yes --force-publish --registry <registry_url>

我已将此步骤插入到我的 Jenkins 构建管道中,如下所示:

stage("setup enviornment") {
      steps {
            echo "\n[ ENV SET UP ]\n"
                ... Authentication Steps
            }
        }
stage("install packages") {
      steps {
        echo "\n[ INSTALLING PACKAGES ]\n"
        sh "yarn install"
      }
    }
stage("build packages") {
      steps {
        echo "\n[ BUILDING PACKAGES ]\n"
        sh "yarn build"
      }
    }
stage("Publish packages") {
      steps {
        echo "\n[ PUBLISHING PACKAGES ]\n"
        sh "yarn daily-deploy"
      }
    }

脚本

daily-deploy
包含如上所述的lerna命令。

但是,在发布包(私有仓库)的最后一步中,我收到以下错误:

lerna info auto-confirmed 
lerna info execute Skipping releases
lerna info git Pushing tags...
lerna info publish Publishing packages to npm...
lerna notice Skipping all user and access validation due to third-party registry
lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
lerna WARN ENOLICENSE Package <package name> is missing a license.
lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository.
lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance.
lerna ERR! ZlibError: zlib: invalid block type
lerna ERR!     at Unzip.ZlibBase.(anonymous function).on.er (/apps/agent/workspace/<project>-prerelease/node_modules/minizlib/index.js:73:52)
lerna ERR!     at Unzip.emit (events.js:203:15)
lerna ERR!     at Zlib.zlibOnError [as onerror] (zlib.js:165:8)
lerna ERR!     at processChunkSync (zlib.js:403:12)
lerna ERR!     at Unzip.ZlibBase._processChunk (zlib.js:378:12)
lerna ERR!     at Unzip.write (/apps/agent/workspace/<project>-prerelease/node_modules/minizlib/index.js:140:30)
lerna ERR!     at Object.write (/apps/agent/workspace/<project>-prerelease/node_modules/tar/lib/parse.js:305:58)
lerna ERR!     at Yallist.pipes.forEach.p (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/minipass/index.js:374:18)
lerna ERR!     at Yallist.forEach (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/yallist/yallist.js:156:8)
lerna ERR!     at ReadStream.emit (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/minipass/index.js:373:20)
lerna ERR!     at ReadStream.emit (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/fs-minipass/index.js:154:22)
lerna ERR!     at ReadStream.write (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/minipass/index.js:163:17)
lerna ERR!     at ReadStream.[_handleChunk] (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/fs-minipass/index.js:131:19)
lerna ERR!     at ReadStream.[_onread] (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/fs-minipass/index.js:109:32)
lerna ERR!     at fs.read (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/fs-minipass/index.js:101:22)
lerna ERR! lerna zlib: invalid block type
error Command failed with exit code 1.

除了一个以外,我所有的私人包裹都有。

我的lerna.json如下:

{
  "packages": [
    "packages/*"
  ],
  "version": "independent",
  "command": {
    "publish": {
      "registry": <repository_url>
    }
  },
  "npmClient": "yarn",
  "useWorkspaces": true
}

有人可以帮我解决这个问题吗?

git jenkins npm package.json lerna
1个回答
0
投票

对我来说,我从

v1.1.0 -> v1.2.0
发布失败,因为进程提前退出,并且我被这个 zlib 错误消息困住了。

我尝试重新运行lerna发布并分别调用

lerna version

  # Optional: Remove the broken version
  git reset --hard HEAD^  # Remove the last commit in local
  git tag -d v1.2.0  # Delete tag in local

  git push origin +master  # Push updates to remote/origin
  git push --delete origin v.1.2.0  # Delete tag in remote
  
  # Retry publish
  lerna version --force-publish  # This will create a commit, a tag, and push to git behind the scene
  
  git fetch origin master
  lerna publish from-git

有趣的是,当我尝试使用相同的号码时,我总是失败:
v1.1.0 -> v1.2.0(失败)

v1.1.0 -> v1.1.1(成功) -> v1.2.0(失败)

v1.1.0 -> v1.1.1 -> v1.2.1(成功)

所以,我只是接受事实并跳过该数字。

P.S.:

lerna version
lerna publish
--force-publish
from-git
之间的区别:https://lerna.js.org/docs/features/version-and-publish#synchronized-versions

另一个也值得尝试的流行答案:
https://github.com/lerna/lerna/issues/2278#issuecomment-652538695

... 您可以做的另一件事是将 git Push 推迟到成功之后 发布:

npx lerna version --no-push --yes 
npx lerna publish from-git --yes
# See https://github.com/lerna/lerna/blob/ea6ec639560ce71d9df8cbd7eef2d416e71f5442/commands/version/lib/git-push.js#L11
git push --follow-tags --no-verify origin master
© www.soinside.com 2019 - 2024. All rights reserved.