Leer en inglés

Compartir a través de


Puntos de integración de GitHub

Almacenamiento en caché de archivos binarios compilados en vcpkg para los flujos de trabajo de Acciones de GitHub

La característica de almacenamiento en caché binaria de vcpkg reduce el tiempo necesario para compilar proyectos que usan Acciones de GitHub para la integración continua. Hay dos proveedores de caché binaria que están disponibles para repositorios de GitHub, el proveedor de caché de Acciones de GitHub y el proveedor de caché nuGet paquetes de GitHub. Para obtener más información sobre estas características de GitHub, consulte Caché de Acciones de GitHub y Paquetes de GitHub. Para obtener más información sobre el almacenamiento en caché binario de vcpkg, consulte nuestra documentación sobre la característica de almacenamiento en caché binario.

Proveedor de caché de Acciones de GitHub

Nota

En esta sección se describe una característica experimental de vcpkg que puede cambiar o quitarse en cualquier momento.

La caché de Acciones de GitHub está pensada para almacenar los archivos de compilación intermedios de un repositorio que no cambian a menudo entre trabajos o ejecuciones de flujo de trabajo. Para los usuarios de GitHub, la caché de Acciones de GitHub es una opción natural para el almacenamiento en caché binario de vcpkg y es más fácil configurar que la integración del almacenamiento en caché binario del paquete de GitHub de vcpkg. GitHub proporciona algunas herramientas diferentes para administrar las cachés de acciones, que incluyen las API REST y una extensión a la herramienta de gh línea de comandos, para que pueda optimizar las memorias caché del flujo de trabajo. La integración de vcpkg con la caché de Acciones de GitHub se realiza a través del x-gha proveedor de origen binario.

Proveedor de caché nuGet de paquetes de GitHub

Los paquetes de GitHub permiten que un repositorio publique artefactos binarios para uso público o privado. Más allá del almacenamiento de hospedaje para paquetes publicados, Paquetes de GitHub admite una variedad de herramientas de administración de paquetes al actuar como un registro de paquetes. vcpkg puede usar la interfaz del registro nuGet para paquetes de GitHub como caché para artefactos binarios vcpkg, mediante el proveedor de nuget origen binario. Esta integración con paquetes de GitHub no es tan sencilla como la integración y administración de la caché de Acciones de GitHub de los archivos binarios almacenados en caché es más difícil, lo que hace que la caché de Acciones de GitHub sea una mejor opción para la mayoría de los usuarios.

Gráfico de dependencias de GitHub

Nota

En esta sección se describe una característica experimental de vcpkg que puede cambiar o quitarse en cualquier momento.

Sugerencia

Estamos desarrollando activamente esta característica y nos gustaría escuchar sus comentarios. Háganos saber si tiene alguna idea sobre la funcionalidad actual o cualquier funcionalidad deseada mediante correo electrónico vcpkg@microsoft.com o mediante la presentación de un problema en vcpkg. Si tiene comentarios sobre cualquiera de las características de GitHub que esto permite, háganoslo saber también y nos aseguraremos de que llega a las personas adecuadas en GitHub.

Acerca del gráfico de dependencias de GitHub

El gráfico de dependencias de GitHub almacena el conjunto de dependencias de un repositorio. Más allá de poder visualizar las dependencias de un repositorio, GitHub compila varias características útiles sobre estos datos, incluidas las alertas de revisión de dependencias y Dependabot. Obtenga más información en la documentación de GitHub sobre cómo proteger la cadena de suministro.

Integración de vcpkg con el gráfico de dependencias de GitHub

vcpkg tiene compatibilidad experimental para rellenar el gráfico de dependencias de GitHub desde un flujo de trabajo de Acciones de GitHub. Para habilitar esta característica, realice los siguientes cambios en el archivo de flujo de trabajo:

  • Establezca la variable de VCPKG_FEATURE_FLAGS entorno para incluir el valor dependencygraph.
  • Establezca la variable de GITHUB_TOKEN entorno en el valor ${{ secrets.GITHUB_TOKEN }}.
  • Proporcione a Acciones de GitHub acceso de escritura al contenido del repositorio mediante la inclusión del siguiente bloque de permisos. Esto es necesario para escribir los metadatos del grafo de dependencia en el repositorio. Esto no agregará ninguna confirmación al repositorio ni realizará ninguna otra modificación en el contenido del repositorio.
permissions:
  contents: write

Debe habilitar el gráfico de dependencias de GitHub en la configuración del repositorio (habilitado de forma predeterminada en repositorios públicos). Para los repositorios privados, siga la documentación de GitHub para habilitar el gráfico de dependencias para satisfacer este requisito.

Limitaciones conocidas

  • Es posible que la versión de vcpkg empaquetada con ejecutores de Acciones de GitHub no esté actualizada. Use la versión más reciente de vcpkg para obtener acceso a esta característica y recibir las correcciones de errores más recientes.
  • Las características que dependen del gráfico de dependencias, como las alertas de Dependabot y las solicitudes de incorporación de cambios de Dependabot, aún no están disponibles. Por favor, háganos saber si está interesado en esas características.

Ejemplo de flujo de trabajo de Acciones de GitHub

Nota

En este ejemplo se supone que hay un manifiesto válido vcpkg.json que enumera algunos puertos dependientes. Para obtener más información sobre los manifiestos, consulte nuestra documentación sobre el modo de manifiesto.

name: Populate dependencies

on:
  push:
    branches: [ main ]
  workflow_dispatch:

permissions:
  contents: write

env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  VCPKG_FEATURE_FLAGS: dependencygraph

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'recursive'

    # This will execute a dry-run, meaning that libraries will not be built and
    # installed, but they will still be reported to the GitHub dependency graph.
    # This step assumes `vcpkg` has been bootstrapped (run `./vcpkg/bootstrap-vcpkg`)
    - name: Run vcpkg
      run: ${{ github.workspace }}/vcpkg/vcpkg install --dry-run