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
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