Beschreibe den Fehler
Ich versuche, ein Canary-Release zu validieren, das auf einem selbst gehosteten Runner ausgefĂŒhrt wird, der AbhĂ€ngigkeiten aus einer privaten Artifactory-npm-Registry abruft und anschlieĂend ein Paket dorthin zurĂŒckveröffentlicht, alles ĂŒber eine GitHub-Aktion, die sich auf einem selbst gehosteten Runner befindet. Alles scheint korrekt zu funktionieren, auĂer der Veröffentlichungsschritt selbst, und ich sehe Folgendes:
AnschlieĂend weiter unten:
Ich habe nicht unbedingt Zugriff auf die Runner-Umgebung, da diese von unserem Operations-Team verwaltet wird, aber ich habe Folgendes ĂŒberprĂŒft:
/home/ubuntu/actions-runner/_work/fe-ui/fe-ui
.npmrc
scheint mit dem Token-Eintrag korrekt aktualisiert zu sein//artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/:_authToken=${NPM_TOKEN}
.npmrc
, die mit dem obigen Token aktualisiert wird, befindet sich in /home/ubuntu/.npmrc
Fortpflanzen
Erwartetes Verhalten
Screenshots
Umweltinformationen:
ZusÀtzlicher Kontext
Ich wĂŒrde gerne weitere Informationen zur VerfĂŒgung stellen, aber ich habe nicht viel mehr zu tun. Was kann ich tun, um zusĂ€tzliche Details hinzuzufĂŒgen, die zur Lösung dieses Problems beitragen können?
Anscheinend verwenden Sie LegacyAuth. Ich wĂŒrde zuerst versuchen, das auszuschalten
@hipstersmoothie Wenn Sie sagen, dass Sie die Legacy-Authentifizierung verwenden, meinen Sie _auth = [token]
in der Datei .npmrc
? Wenn ja, ist das nicht der Fall, wenn nicht, was meinst du genau und wie wĂŒrde ich das abstellen?
Sie sollten wahrscheinlich mit Ihrem Entwicklerteam daran arbeiten, dies zu lösen.
Einige Tipps basierend auf unserer artifactorischen Verwendung:
npm
PlugIn`s setRcToken
auf false
Mir war aufgefallen, dass der Canary-Befehl in Ihrer Ausgabe das Flag _auth
verwendet, das nur verwendet wird, wenn Sie legacyAuth
in Ihrer .autorc . auf true gesetzt haben
Die Schritte, die Sie lokal ausfĂŒhren können, sind:
~/.npmrc
setRcToken
auf false
@hipstersmoothie ah, Sie haben .npmrc
einzustellen und sehe immer noch eine 403. Ich verstehe, dass dies wahrscheinlich eine EinschrÀnkung unseres Ops-Setups ist, aber nur aus Neugier, was ist in Ihrem npmrc? Unsere ist die folgende:
registry = https://artifactory.internal.livongo.com/artifactory/api/npm/npm-virtual
email = [email protected]
always-auth = true
save-exact = true
und dann in package.json:
"publishConfig": {
"registry": "https://artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/"
},
Sie werden feststellen, dass das Ende der URL fĂŒr Veröffentlichungen und npm-Installationen unterschiedlich ist, was meines Wissens durch Artifactory fĂŒr die Caching-Schicht erforderlich war, aber ich bin definitiv kein Experte fĂŒr Artifactory selbst. Ich erinnere mich nur, dass dies die einzige Möglichkeit war, die Authentifizierung korrekt zum Laufen zu bringen (durch die Verwendung von LegacyAuth), wenn wir von unseren lokalen Computern auf Artifactory veröffentlichen. Jetzt versuchen wir, die lokale Veröffentlichung zu blockieren und dies auf GitHub Actions auszulagern, aber wie es der Zufall so will, wollte ich einen Canary dieser Ănderung veröffentlichen, bevor ich LegacyAuth aus unserer gemeinsamen Autokonfiguration entfernt und an alle unsere Pakete verteilt habe, aber Leider kann ich das nicht, weil ich jetzt nicht veröffentlichen kann, weil LegacyAuth fehlt, lol.
Wir haben dies vor langer Zeit einmal eingerichtet, aber ich werde versuchen, die Schritte zu kommunizieren, die wir unternehmen:
Hier ist unsere interne Dokumentation zum Einrichten von npmrc
Ansonsten werde ich wahrscheinlich keine groĂe Hilfe sein. Artifactory kann etwas schwer zu benehmen sein
@hipstersmoothie Ich schĂ€tze deine Hilfe. Sie haben sehr Recht, wenn es darum geht, Artifactory zum Verhalten zu bringen, und es ist besonders schwieriger, wenn Sie keinen Zugriff auf die Verwaltung der Instanz erhalten und immer wieder mit Devops hin und her gehen mĂŒssen, um Dinge auszuprobieren.
UnabhĂ€ngig davon schĂ€tze ich Ihre Hilfe und werde weiterhin darauf verzichten. Ich hatte bereits versucht, ein Setup Ă€hnlich dem, das Sie in diesem Screenshot gezeigt haben, nachzuahmen (und dann noch einmal versucht, es zu ĂŒberprĂŒfen, nachdem Sie es gepostet haben), und es hat fĂŒr meinen Anwendungsfall nicht funktioniert, wahrscheinlich aufgrund einer anderen Einstellung in Artifactory fĂŒr uns. Wenn es Ihnen nichts ausmacht, wĂŒrde ich dieses Problem gerne offen lassen und werde es zurĂŒckkommen und es schlieĂen, wenn/sobald wir das Problem gelöst haben. Ich werde wahrscheinlich als Teil dieses Prozesses durch die Interna von Auto gehen.
Ja, damit komme ich gut zurecht. Wenn Sie einen guten Einrichtungsschritt fĂŒr die Artifactory finden, können wir ihn auch zu den Dokumenten hinzufĂŒgen
@hipstersmoothie Ich
https://github.com/intuit/auto/blob/v10.21.3/plugins/npm/src/set-npm-token.ts#L37
FĂŒr meinen lokalen Computer (der interne Artifactory erreichen kann), kann ich veröffentlichen, wenn isCi
false
ist. Wenn ich meine oben referenzierte lokale node_modules/@auto-it/npm/dist/set-npm-token.js
Zeile in if (false) {
Ă€ndere, erhalte ich denselben 403-Fehler wie wenn isCi
true
.
Entweder ist es richtig fĂŒr non-ci oder richtig fĂŒr ci. Ich vermute, dass das setTokenOnCI
legacyAuth
nicht in Betracht
Sieht so aus, als hĂ€ttest du ĂŒbersehen, wo ich das gesagt habe
Stellen Sie sicher, dass Sie setRcToken auf false gesetzt haben
Der gesamte Code wird ĂŒbersprungen, wenn Sie setRcToken
auf false
@hipstersmoothie was fĂŒr eine sehr nette Antwort und alles ist gut, wenn wir setRcToken
auf false
. Die Verwendung von auto
ĂŒber Github-Aktionen fĂŒr unsere Artifactory ist ein GO. Vielen Dank!
Problem kann geschlossen werden, Benutzer-/Einrichtungsfehler, danke fĂŒr die UnterstĂŒtzung.
@hipstersmoothie Vielen Dank, dass Sie geduldig waren, wÀhrend wir das herausgefunden haben.