I'm using some github action to release one of my package in a mono repo, holding about 4-5 package likes:
github-repository (monorepo):
- folder_1 (package 1)
- folder_2 (package 2)
- folder_3 (package 3)
For each packages located in this monorepo, when a tag matching a version is released, the action will release it, using a workflow (almost identical for all packages):
name: package 1
on:
push:
tags:
- package1/v*
permissions:
contents: read
packages: write
jobs:
release:
name: Release
runs-on: ubuntu-22.12
defaults:
run:
working-directory: folder_1
steps:
- name: Checkout source code
uses: actions/checkout@ab597985615ec2ede58e132d2621d2b1cbd6127c
- name: Set up Node
uses: .github/actions/secure-setup-node
with:
path: folder_1
- name: install dependencies
run: yarn --frozen-lockfile
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: build package
run: yarn build
- name: add package.json
run: cp package.json ./dist
- name: add yarn.lock
run: cp yarn.lock ./dist
- name: add README.md
run: cp README.md ./dist
- run: yarn publish ./dist
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
each packages have their own action's workflow .yaml
and works fine, except for the new package I just created: package 4 (located in github-repository/folder_4)
.
it's a basic package except it only holds config files, so it's yarn build
script will only copy theses file in the ./dist
folder, without implying node or javascript, making it's workflow looking like:
name: Config Release
on:
push:
tags:
- package4/v*
permissions:
contents: read
packages: write
jobs:
release:
name: Release
runs-on: ubuntu-latest
defaults:
run:
working-directory: folder_4
steps:
- name: Checkout source code
uses: actions/checkout@a55da8c3cf115ac326823e79a1e1788f7940201b
- name: build package
run: yarn build
- run: yarn publish ./dist
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
But here goes the issue ! running this action will result by:
Run yarn publish ./dist
yarn publish v1.22.19
[1/4] Bumping version...
info Current version: 1.0.0
[2/4] Logging in...
error No token found and can't prompt for login when running with --non-interactive.
info Visit https://yarnpkg.com/en/docs/cli/publish for documentation about this command.
Error: Process completed with exit code 1.
I checked a lot of documentation or github issues about this matter and managed to fix my problem, by replacing NODE_AUTH_TOKEN
by NPM_AUTH_TOKEN
, but why did it solved it when all my previous packages are still using NODE_AUTH_TOKEN
? is it because I'm not using setup-node
? (I don't use it because I'm not using node to build my javascript), because I don't have yarn.lock
? (even an empty one),
What's the difference about these 2 ? in this issue someone told that:
NPM_AUTH_TOKEN work for npm registry
NODE_AUTH_TOKEN work for scope registry
what does it mean ?