Auto: Auth no se recoge correctamente en GitHub Action usando Artifactory y corredores autohospedados

Creado en 19 mar. 2021  ·  14Comentarios  ·  Fuente: intuit/auto

Describe el error

Estoy tratando de validar una versión canary que se ejecuta en un corredor autohospedado que extrae dependencias de un registro npm privado de Artifactory y luego publica un paquete en él, todo a través de una acción de GitHub que se encuentra en un corredor autohospedado. Todo parece funcionar correctamente, excepto el paso de publicación en sí, y veo lo siguiente:

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

Posteriormente, más abajo:

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

No necesariamente tengo acceso al entorno del corredor, ya que es administrado por nuestro equipo de operaciones, pero he verificado lo siguiente:

  • La acción se ejecuta en /home/ubuntu/actions-runner/_work/fe-ui/fe-ui
  • El archivo .npmrc parece estar actualizado con la entrada del token correctamente

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

  • El archivo .npmrc que se está actualizando con el token anterior vive dentro de /home/ubuntu/.npmrc

Reproducir



Comportamiento esperado

Capturas de pantalla

Información medioambiental:


Contexto adicional

Me encantaría proporcionar información adicional, pero no tengo mucho más de lo que basarme. ¿Qué puedo hacer para agregar detalles adicionales que puedan ayudar a resolver esto?

bug

Todos 14 comentarios

Parece que estás usando legacyAuth. Intentaría apagar eso primero

@hipstersmoothie cuando dices usar autenticación heredada, ¿te refieres a _auth = [token] en el archivo .npmrc ? Si es así, ese no es el caso, si no es así, ¿qué quiere decir exactamente y cómo lo apagaría?

Probablemente debería trabajar para resolver esto con su chico de DevOps.

Algunos consejos basados ​​en nuestro uso de artefactos:

  • Almacenamos un artefactorio válido .npmrc en una var env que se inyecta durante nuestras compilaciones.

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

  • Dado que nosotros mismos configuramos el npmrc, también debe configurar el npm complemento setRcToken en false

Me di cuenta de que el comando canary en su salida usa la bandera _auth , que solo se usa si tiene legacyAuth establecido en verdadero en su .autorc

Entonces, los pasos que puede tomar localmente son:

  1. obtener un npmrc que funcione localmente que se publique en el artefactorio
  2. copiarlo en una var env
  3. inyecte esa var env durante una compilación en ~/.npmrc
  4. Asegúrese de haber configurado setRcToken en false

@hipstersmoothie ah, tienes razón, configuramos legacyAuth en verdadero porque sin él (y ahora que estoy probando tus sugerencias), obtenemos un 403 Forbidden de nuestra instancia de artefacto. Intenté configurar el registro con el conjunto de tokens (como en mi publicación original pero con el token real) en el archivo .npmrc y sigo viendo un 403. Entiendo que esto probablemente sea una limitación de la configuración de nuestras operaciones, pero solo por curiosidad, ¿qué hay en tu npmrc? El nuestro es el siguiente:

registry = https://artifactory.internal.livongo.com/artifactory/api/npm/npm-virtual
email = [email protected]
always-auth = true
save-exact = true

y luego en package.json:

"publishConfig": {
  "registry": "https://artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/"
},

Notarás que el final de la URL es diferente para las instalaciones de publicación y npm, lo cual, según mi entendimiento, era necesario a través de Artifactory para la capa de almacenamiento en caché, pero definitivamente no soy un experto en Artifactory en sí. Solo recuerdo que esta fue la única forma en que pudimos hacer que la autenticación funcionara correctamente (usando legacyAuth) cuando estábamos publicando desde nuestras máquinas locales en Artifactory. Ahora, estamos tratando de bloquear la publicación local y descargar esto en Acciones de GitHub pero, por suerte, quería publicar un canario de ese cambio antes de eliminar legacyAuth de nuestra configuración automática compartida y distribuirlo a todos nuestros paquetes, pero por desgracia, no puedo porque ahora no puedo publicar debido a que falta legacyAuth, jajaja.

Configuramos esto una vez hace mucho tiempo, pero intentaré comunicar los pasos que damos:

Aquí están nuestros documentos internos para configurar npmrc

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

Aparte de esto, probablemente no seré de mucha ayuda. El artefacto puede ser un poco difícil de comportarse

@hipstersmoothie Agradezco tu ayuda. Tiene mucha razón en términos de hacer que Artifactory se comporte, y es especialmente más difícil si no puede obtener acceso para administrar la instancia y tiene que seguir yendo y viniendo con devops para probar cosas.

Independientemente, agradezco su ayuda y continuaré con esto. ya había intentado imitar una configuración similar a la que mostraste en esa captura de pantalla (y luego lo intenté nuevamente solo para verificar después de que la publicaste) y no funcionó para mi caso de uso, probablemente debido a una configuración en Artifactory que difiere para nosotros. Si no le importa, me gustaría mantener este problema abierto y volveré y lo cerraré cuando lo resolvamos. Probablemente terminaré revisando los aspectos internos del automóvil como parte de ese proceso.

Sí, estoy bien con eso. Si se le ocurre algún buen paso de configuración de artefactos, también podemos agregarlo a los documentos.

@hipstersmoothie Estoy mirando esta línea:

https://github.com/intuit/auto/blob/v10.21.3/plugins/npm/src/set-npm-token.ts#L37

Para mi máquina local (capaz de alcanzar el artefacto interno), cuando isCi es false , puedo publicar. Si cambio mi línea local node_modules/@auto-it/npm/dist/set-npm-token.js mencionada anteriormente para que sea if (false) { , entonces obtengo el mismo error 403 que cuando isCi es true .

O es correcto para non-ci, o correcto para ci. Sospecho que el setTokenOnCI no está considerando legacyAuth y debería?

Parece que te habrás perdido donde dije esto

Asegúrese de haber establecido setRcToken en falso

Todo ese código se omite si tiene setRcToken establecido en false

@hipstersmoothie qué respuesta tan agradable y todo está bien una vez que establecemos setRcToken en false . Usar auto través de acciones de github en nuestro artefacto es un GO. ¡Gracias!

El problema se puede cerrar, error de usuario / configuración, gracias por el apoyo.

@hipstersmoothie Gracias por su paciencia mientras averiguamos esto.

¿Fue útil esta página
0 / 5 - 0 calificaciones