Я создаю рабочий процесс GitHub Actions для создания и публикации пакетов npm в GitHub Packages. Репо - это монорепозиторий с несколькими пакетами, поэтому я использую инструмент semantic-release-monorepo. Однако шаг к публикации не удается, и я не могу понять, почему.
Мой файл рабочего процесса GitHub Actions выглядит следующим образом (немного урезан)
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
env:
GH_TOKEN: ${{ secrets.MY_PAT }}
steps:
- name: Checkout repo
uses: actions/checkout@v2
run: |
yarn install
yarn build
- name: Setup node for publishing to Github packages
uses: actions/setup-node@v2
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
node-version: "12.x"
registry-url: "https://npm.pkg.github.com"
- name: Yarn publish packages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
yarn publish-packages
yarn publish-packages
запускает сценарий, который выполняет команду lerna для семантического выпуска
lerna exec --concurrency 1 -- npx --no-install semantic-release -e semantic-release-monorepo
Я убедился, что репозиторий package.json, а также package.json для каждого пакета имеет правильный URL-адрес репозитория, https://github.com/owner/repo.git
. У моего личного токена доступа есть разрешения на репо, запись и удаление пакетов.
Независимо от того, какие конфигурации я меняю, шаг завершается ошибкой со следующими сообщениями:
Команда git push --dry-run --no-verify https: // [secure] @ github.com / xxx / xxx.git HEAD: develop не удалось с сообщением об ошибке remote: Repository not found. 26 фатальный: репозиторий https://github.com/xxx/xxx.git/ не найден.
Второе сообщение
EGITNOPERMISSION: 'semantic-release не может отправить тег версии в ветку
develop
в удаленном репозитории Git с URLhttps://[secure]@github.com/xxx/xxx.git
Другие вещи, которые я пробовал:
- Добавление scope = @ xxx к шагу установки-узла после чтения GH docs, в котором говорится, что GitHub Packages поддерживает только пакеты npm с ограниченной областью действия.
- Согласно документам по семантическому выпуску, я попытался установить GH_TOKEN, GITHUB_TOKEN и NPM_TOKEN для каждой комбинации моего PAT или GITHUB_TOKEN в секрете. Я считаю, что в документах говорится, что поддерживается только PAT. Кроме того, NPM_TOKEN не требуется, поскольку использование URL-адреса реестра с действием узла настройки создает файл .npmrc, который по умолчанию использует
NODE_AUTH_TOKEN
. - Здесь есть почти аналогичный вопрос , но с добавлением
.git
к URL-адресу его репозитория кажется, исправил это для него - Документы Github говорят, что я могу использовать PAT или GITHUB_TOKEN в качестве токена аутентификации в файле .npmrc, так что это не должно быть проблемой
Я просмотрел документы для semantic-release, semantic-release-monorepo, GitHub Actions и GitHub Packages. Если мне нужно добавить дополнительную информацию, пожалуйста, дайте мне знать.