Quiero usar Artifactory como proxy de almacenamiento en caché para las dependencias de mi compositor de PHP.
Pude crear manualmente un repositorio remoto y configurar Composer para usar Artifactory en lugar de Packagist.
El problema es que mi proyecto tiene muchas dependencias (porque las dependencias tienen dependencias).
Será imposible usar Artifactory si tengo que hacerlo manualmente.
¿Cómo puedo crear un espejo de todas mis dependencias (incluidas las dependencias indirectas) a partir de mi composer.json ?
Un repositorio remoto en Artifactory generalmente se usa para duplicar otro repositorio/registro, sirviendo múltiples paquetes. No debería ser necesario configurar un nuevo repositorio remoto para cada dependencia (es decir, paquete).
Dado que la mayoría de los paquetes en packagist.org se sirven desde github.com , configurar un único repositorio remoto que resuelva los archivos de índice de registro de packagist y los binarios de github debería ser suficiente.
Si depende de paquetes que no están alojados en github, simplemente puede agregar un repositorio remoto adicional que refleje ese otro proveedor de git. En este caso, también debe definir un repositorio virtual que agregue todos los repositorios relevantes y use ese repositorio para resolver sus dependencias.
Para obtener más detalles, consulte la documentación de los repositorios remotos de PHP Composer .
JFrog CLI puede ayudar a configurar la automatización para administrar sus repositorios de Artifactory. Puede crear, actualizar y eliminar repositorios de Artifactory locales, remotos y virtuales. Esto es lo que debe hacer:
1. Instale la CLI de JFrog
Instale JFrog CLI desde https://jfrog.com/getcli/
2. Configure su instancia de JFrog
Configure los detalles de conexión de su instancia de JFrog ejecutando el siguiente comando:
jfrog c agrega mi instancia
3. Crea una plantilla de repositorio
Ejecute el siguiente comando:
jfrog rt rpt repo-conf-plantilla.yml
Este comando creará un archivo de plantilla llamado repo-conf-template.yml en el directorio actual, con su configuración de repositorio. Este es un comando interactivo, que le plantea una serie de preguntas. Tiene la opción de utilizar variables como valores para las preguntas. Por ejemplo, cuando se le solicite que proporcione la clave del repositorio, puede proporcionar ${my-repo-key} como valor. Esto permite reemplazar la variable my-repo-key con cualquier valor de clave de repositorio, cuando se usa la plantilla. De esta manera, puede usar exactamente la misma configuración para crear un nuevo repositorio y solo establecer una nueva clave de repositorio cada vez.
4. Crear, actualizar o eliminar un repositorio
Ahora que tiene la plantilla lista, puede usarla para crear y actualizar repositorios como parte de sus scripts de automatización. Supongamos que le gustaría crear un repositorio utilizando la plantilla repo-conf-template.yml que creó, que incluye la variable ${my-repo-key} para la clave del repositorio. Luego debe usar el comando jfrog rt rc de la siguiente manera.
jfrog rt rc repo-conf-template.yml --vars "my-repo-key=my-actual-repo-name"
Tenga en cuenta que puede establecer valores para múltiples variables usando el siguiente formato para --vars usando el siguiente formato:
--vars "clave1=valor1;clave2=valor2;..."
Puede usar de manera similar jfrog rt ru para actualizar un repositorio usando una plantilla. Para eliminar este repositorio, ejecute jfrog rt rdel de la siguiente manera.
jfrog rt rdel my-actual-repo-name
Lea más sobre la gestión de repositorios con JFrog CLI aquí