Hôm qua gặp bug của thanh niên Verdaccio này làm mấy script bên mình bị error Login!
npm ERR! code ENEEDAUTH npm ERR! need auth This command requires you to be logged in. npm ERR! need auth You need to authorize this machine using `npm adduser` npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2022-09-08T07_31_36_886Z-debug.log

nay thanh niên đã bỏ khoảng trắng đó ra và thể scipt cắt chuỗi bị lỗi!
Case của mình là các Ông devops trước đó dựng 1 Local Private NPM registry trong con build image.
OK vào chủ đề chính!
https://github.com/verdaccio/verdaccio
essential Script:
ci/registry.sh
#!/bin/bash
set -e
function usage {
echo "Usage: $0 start|stop [port]"
echo "Optionally, set the environment variable MODULES to specify which modules to build and publish."
echo "For example, MODULES=logger,common $0 start"
exit 1
}
if [ $# -lt 1 ]; then
usage
fi
PORT=${2:-4873}
if [ "$1" == "stop" ]; then
pm2 stop "verdaccio --listen $PORT"
exit $?
elif [ "$1" != "start" ]; then
usage
fi
npm config set registry https://registry.npmjs.org/
npm list -g pm2 || npm i -g pm2
npm list -g verdaccio || npm i -g verdaccio
pm2 start --wait-ready "verdaccio --listen $PORT"
$(dirname "$0")/npm-login.sh
PROJECTS=$(./ci/get-install-order.py)
echo "Building projects: $PROJECTS"
for folder in ${PROJECTS[*]}
do
pushd ${PROJECT_PATH-.}/${folder}
if [[ -z "$SKIP_BUILD" ]]; then
echo -e "\nBuilding and publishing module: ${folder}"
if [[ "$folder" == "kafka-communicator" ]]; then
if [[ "$(sed -rn 's/^NAME="(.*)"/\1/p' /etc/os-release)" == "Alpine Linux" ]]; then
apk --no-cache add bash g++ ca-certificates lz4-dev musl-dev cyrus-sasl-dev openssl-dev make python3
apk add --no-cache --virtual .build-deps gcc zlib-dev libc-dev bsd-compat-headers py-setuptools
fi
fi
npx update-by-scope @nimtechnology
npm ci
npm run build
fi
npm unpublish -f || echo "Error unpublishing package. Is the package in the registry?"
npm publish
popd
done
ci/npm-login.sh
#!/bin/bash
PORT=4873
X=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13 ; echo '')
TOKEN=$(curl -s -XPUT -H "Content-type: application/json" -d '{ "name": "'${X}'", "password": "'${X}'" }' http://localhost:$PORT/-/user/org.couchdb.user:${X} | perl -nle 'print $& while m{(?<="token":")[^"]*}g')
printf '@nimtechnology:registry=http://127.0.0.1:'$PORT'\nregistry=https://registry.npmjs.org/\n//127.0.0.1:'$PORT'/:_authToken="'$TOKEN'"\n' > ~/.npmrc
Reference Links:
https://blog.bitsrc.io/how-to-set-up-a-private-npm-registry-locally-1065e6790796
https://itnext.io/creating-a-free-private-npm-registry-with-verdaccio-e1becdc542b
https://hostingcanada.org/htpasswd-generator/
Helm chart of Verdaccio
Helm Chart: https://charts.verdaccio.org
Default value file: https://github.com/verdaccio/charts/blob/master/charts/verdaccio/values.yaml
ingress:
enabled: true
className: "nginx"
annotations:
cert-manager.io/issuer: verdaccio
cert-manager.io/issuer-kind: Issuer
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
hosts:
- verdaccio.nimtechnology.com
tls:
- secretName: verdaccio-ingress
hosts:
- verdaccio.nimtechnology.com
Bạn nhờ đặt tẻn app khác: verdaccio
https://github.com/verdaccio/charts/issues/103