我维护一个lerna / yarn monorepo。我正在将CI / CD从圈子迁移到新的GitHuba Actions发布beta。我创建了以下工作流程:
name: CD on: push: branches: - master jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: Checkout master run: git checkout master - name: Install rsync run: sudo apt install rsync - name: Install yarn run: | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update sudo apt-get install yarn - name: Install Packages run: yarn install - name: Test run: yarn test - name: Upload coverage results to Code Climate run: sh ./scripts/upload-coverage.sh env: CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} - name: Authenticate with Registry run: echo "registry=//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Configure CI Git User run: | git config --global user.email octobot@github.com git config --global user.name GitHub Actions - name: Publish package run: yarn deploy --yes env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build Docs run: yarn docs - name: Deploy Docs run: | echo "apolloelements.dev" > docs/CNAME npx gh-pages --dist docs
它在“发布软件包”步骤中失败,并显示以下消息:
lerna info git Pushing tags... lerna ERR! Error: Command failed: git push --follow-tags --no-verify origin master lerna ERR! fatal: could not read Username for 'https://github.com': No such device or address lerna ERR! lerna ERR! at makeError (/home/runner/work/apollo-elements/apollo-elements/node_modules/execa/index.js:174:9) lerna ERR! at Promise.all.then.arr (/home/runner/work/apollo-elements/apollo-elements/node_modules/execa/index.js:278:16) lerna ERR! Error: Command failed: git push --follow-tags --no-verify origin master lerna ERR! fatal: could not read Username for 'https://github.com': No such device or address lerna ERR! lerna ERR! at makeError (/home/runner/work/apollo-elements/apollo-elements/node_modules/execa/index.js:174:9) lerna ERR! at Promise.all.then.arr (/home/runner/work/apollo-elements/apollo-elements/node_modules/execa/index.js:278:16) lerna ERR! lerna Command failed: git push --follow-tags --no-verify origin master lerna ERR! lerna fatal: could not read Username for 'https://github.com': No such device or address lerna ERR! lerna error Command failed with exit code 128. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
更改远程以使用HTTPS和github令牌没有帮助:
git remote rm origin git remote add origin "https://$USER_NAME:$GITHUB_PERSONAL_ACCESS_TOKEN@github.com/apollo-elements/apollo-elements.git"
哪里GITHUB_PERSONAL_ACCESS_TOKEN
是通过秘密通过了PAT。
在这种情况下,我收到此错误:
lerna ERR! ENOREMOTEBRANCH Branch 'master' doesn't exist in remote 'origin'.
我应该如何设置项目以能够将标签推送并从CD提交回存储库?
在StackOverflow用户@rmunn的帮助下,我得出了以下解决方案:
- name: Configure CI Git User run: | git remote rm origin git remote add origin "https://$USER_NAME:$GITHUB_PAT@github.com/apollo-elements/apollo-elements.git" git fetch git config --global user.email octobot@github.com git config --global user.name GitHub Actions env: USER_NAME: ${{ secrets.DEPLOYING_USER_NAME }} GITHUB_PAT: ${{ secrets.GITHUB_PAT }}
凡GITHUB_PAT
在个人访问令牌与repo
范围,保存在秘密。
将git fetch
需要建立本地分支机构的改变遥控器上。需要个人访问令牌才能推回存储库。