Eugenio Goryaev
Desarrollo, soporte y optimización

Construyendo un proyecto PHP en Gitlab CI con dependencias privadas

La ilustración para el artículo Construyendo un proyecto PHP en Gitlab CI con dependencias privadas

A veces es necesario mover algunas de las funciones a una biblioteca separada para compartirlas con otros proyectos privados. Si no debe estar disponible para el público, entonces su repositorio también debe ser privado. Para que el administrador de paquetes de php composer mientras construye el proyecto en CI pueda agregarlo, debe estar autorizado y tener acceso a este repositorio privado. La mejor opción de autorización en esta situación es usar el token, que pasa desde la configuración de gitlab durante la compilación del contenedor del proyecto.

Crear una ficha

Si necesita que Composer tenga acceso a todos sus repositorios privados (lo que puede ser útil en algunos casos), entonces necesita generar un token en su configuración de usuario en:

https://gitlab.com/-/profile/personal_access_tokens

Si necesita otorgar acceso a un repositorio privado, puede generar un token solo para él. Esto se hace en la sección de su proyecto:

https://gitlab.com/user/project/-/settings/access_tokens

Trabajando con token en CI

El token generado debe guardarse en las variables de entorno, en la configuración de CI del proyecto en esta página:

https://gitlab.com/user/project/-/settings/ci_cd

Normalmente almaceno el token como COMPOSER_TOKEN en la configuración de CI del proyecto en gitlab.

En .gitlab-ci.yml, donde se llama al comando de compilación del contenedor docker build, debemos agregar nuestra variable como argumento: --build-arg COMPOSER_TOKEN=${COMPOSER_TOKEN} Como resultado, mi comando de compilación en el archivo de configuración gtalb CI se parece a esto:

    guion:
      ->
        compilación de la ventana acoplable
        --jalar
        --build-arg VCS_REF=$CI_COMMIT_SHA
        --build-arg VCS_URL=$CI_PROJECT_URL
        --file=docker/dockerfile
        --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --build-arg COMPOSER_TOKEN=${COMPOSER_TOKEN}
        .

Y en el dockerfile, debemos autorizar al compositor con nuestro token, habiendo aceptado previamente los argumentos del comando de compilación. Un fragmento de mi archivo se ve así:

DE registro.gitlab.com/floor12/images:basic81

ARG COMPOSER_TOKEN

WORKDIR /aplicación

COPIAR ./compositor.bloqueo ./compositor.bloqueo
COPIAR ./compositor.json ./compositor.json

EJECUTAR la configuración del compositor gitlab-token.gitlab.com $ COMPOSER_TOKEN
EJECUTE la instalación del compositor --prefer-dist --no-progress --no-scripts --optimize-autoloader

El compositor ahora puede ser autorizado y podrá acceder al repositorio privado requerido. Además, no olvide agregar la URL del repositorio al archivo composer.json de su proyecto, ya que packagist no puede saber nada sobre sus proyectos privados.

{
    "nombre": "piso12/prueba",
    "estabilidad mínima": "estable",
    "exigir": {
      "php": ">=8.0.0",
      "piso12/algún-paquete-privado"
    },
    "repositorios": [
      {
        "tipo": "compositor",
        "url": "https://asset-packagist.org"
      },
      {
        "tipo": "git",
        "url": "https://gitlab.com/floor12/algún-paquete-privado"
      }
}

Si necesita acceder a un repositorio que no está alojado en gitlab, sino en algún otro lugar, puede elegir uno de los módulos integrados del compositor descritos en la documentación oficial del compositor,

También se puede encontrar información más detallada sobre la autorización de gitlab y composer en la documentación de gitalb.

Espero que esta información te haya sido útil.