通过GitHub操作将Lerna Monorepo发布到NPM时发生Git错误
我使用以下GitHub操作(新的通过GitHub操作将Lerna Monorepo发布到NPM时发生Git错误,git,github,npm,lerna,github-actions,Git,Github,Npm,Lerna,Github Actions,我使用以下GitHub操作(新的YAMLversion)工作流从我的lernamonorepo发布包,以推送到master: name: CD on: push: branches: - master jobs: deployPackages: name: Deploy Packages runs-on: ubuntu-latest steps: - uses: actions/checkout@master
YAML
version)工作流从我的lerna
monorepo发布包,以推送到master
:
name: CD
on:
push:
branches:
- master
jobs:
deployPackages:
name: Deploy Packages
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Checkout master
run: git checkout master
- name: Install
uses: nuxt/actions-yarn@master
with:
args: install
- name: Build
uses: nuxt/actions-yarn@master
with:
args: build
- name: Lint
uses: nuxt/actions-yarn@master
with:
args: lint
- name: Test
uses: ianwalter/puppeteer@v1.0.0
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
with:
entrypoint: yarn
args: test:ci
- name: Deploy Packages
uses: nuxt/actions-yarn@master
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
DEPLOYING_USER_NAME: ${{ secrets.DEPLOYING_USER_NAME }}
GH_PAT: ${{ secrets.GH_PAT }}
with:
args: deploy:ci
- name: Build Docs
uses: nuxt/actions-yarn@master
with:
args: docs
- name: Deploy Docs
uses: maxheld83/ghpages@v0.2.1
env:
BUILD_DIR: _site/
GH_PAT: ${{ secrets.GH_PAT }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
deploy:ci
npm脚本执行以下bash脚本:
echo“使用注册表进行身份验证…”
npm配置集注册表//registry.npmjs.org/:\u authToken=$npm\u TOKEN-q
echo“正在添加Git远程…”
git远程rm源
git remote add origin“https://$DEPLOYING\u用户名:$GH_PAT@github.com/范围/REPO_NAME.git“
git获取
git标记-d主控
echo“配置CI Git用户…”
git config--全局user.emailoctobot@github.com
git config--全局user.name GitHub操作
echo“发布包…”
npx勒纳出版公司\
--消息“琐事:发布新版本”\
--对
这将导致以下错误:
lerna info execute Skipping releases
lerna info git Pushing tags...
lerna ERR! Error: Command failed: git push --follow-tags --no-verify origin master
lerna ERR! error: src refspec refs/heads/master matches more than one.
lerna ERR! fatal: The remote end hung up unexpectedly
lerna ERR! error: failed to push some refs to 'https://***:***@github.com/SCOPE/REPO_NAME.git'
lerna ERR!
lerna ERR! at makeError (/github/workspace/node_modules/execa/index.js:174:9)
lerna ERR! at Promise.all.then.arr (/github/workspace/node_modules/execa/index.js:278:16)
导致上述错误的原因是什么?您看到的错误“src refspec refs/heads/master匹配多个版本”,意味着您尝试推送的内容匹配多个版本。如果给出的refspec是,比如说,master
,那么可能的情况是,您有一个分支和一个名为master
的标记,Git不知道要推哪个
在这种情况下,可能既有名为master
的分支和标记,也有名为refs/heads/master
(master
分支)和refs/heads/refs/heads/master
(即refs/heads/master
分支)或refs/tags/refs/heads/master/master
(这是refs/heads/master
标记),Git感到困惑
看起来您正试图删除脚本中的
主标记,这可能是问题的根源。您可能希望修复导致创建该标记的任何原因,以便不再存在此问题。但是,如果没有看到您的回购协议,很难确切地说原因是什么。git-tag-l | grep master
没有输出,因此我没有master
标记。行git tag-d master
是避免此错误的天真尝试,可以忽略。基本上,为了将标记推送到repo(lerna工作流的一部分),我需要根据