Auto: Auth wird in GitHub Action mit Artifactory und selbst gehosteten Runnern nicht korrekt abgeholt

Erstellt am 19. MĂ€rz 2021  Â·  14Kommentare  Â·  Quelle: intuit/auto

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:

Screen Shot 2021-03-19 at 10 11 08 AM

Anschließend weiter unten:

Screen Shot 2021-03-19 at 10 11 53 AM

Ich habe nicht unbedingt Zugriff auf die Runner-Umgebung, da diese von unserem Operations-Team verwaltet wird, aber ich habe Folgendes ĂŒberprĂŒft:

  • Die Aktion lĂ€uft in /home/ubuntu/actions-runner/_work/fe-ui/fe-ui
  • Die Datei .npmrc scheint mit dem Token-Eintrag korrekt aktualisiert zu sein

    • //artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/:_authToken=${NPM_TOKEN}

  • Die Datei .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?

bug

Alle 14 Kommentare

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:

  • Wir speichern eine gĂŒltige artifactory .npmrc in einer env var, die wĂ€hrend unserer Builds injiziert wird

Screen Shot 2021-03-19 at 11 32 06 AM

  • Da wir die npmrc uns setzen Sie auch die festlegen mĂŒssen 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:

  1. Holen Sie sich eine npmrc, die lokal arbeitet und in artifactory veröffentlicht
  2. kopiere es in eine env var
  3. Injizieren Sie diese env var wÀhrend eines Builds in ~/.npmrc
  4. Stellen Sie sicher, dass Sie 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

Screen Shot 2021-03-19 at 12 01 36 PM

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen