GitHub-integratiepunten

Binaire vcpkg-bestanden in de cache opslaan voor uw GitHub Actions-werkstromen

De functie voor binaire caching van vcpkg vermindert de hoeveelheid tijd die nodig is om projecten te bouwen die gebruikmaken van GitHub Actions voor continue integratie. Lees de documentatie voor binaire cachefuncties voor meer informatie.

De NuGet-cacheprovider voor GitHub Packages

Met GitHub Packages kunnen opslagplaatsen binaire artefacten publiceren voor openbaar of privégebruik. Naast het hosten van opslag voor gepubliceerde pakketten biedt GitHub Packages ondersteuning een NuGet-registerinterface die vcpkg kan gebruiken als een binaire cache, met de nuget binaire bronprovider.

De GitHub-afhankelijkheidsgrafiek

Opmerking

In deze sectie wordt een experimentele functie van vcpkg behandeld die op elk gewenst moment kan worden gewijzigd of verwijderd.

Aanbeveling

We ontwikkelen deze functie actief en horen graag uw feedback. Laat het ons weten als u gedachten hebt over de huidige functionaliteit of een gewenste functionaliteit door een e-mail te vcpkg@microsoft.com sturen of door een probleem in vcpkg in te dienen. Als u feedback hebt over een van de GitHub-functies die dit mogelijk maakt, laat het ons dan ook weten en we zorgen ervoor dat deze bij de juiste mensen op GitHub komt.

Informatie over de GitHub-afhankelijkheidsgrafiek

In de GitHub-afhankelijkheidsgrafiek wordt de set afhankelijkheden voor een opslagplaats opgeslagen. Naast het visualiseren van de afhankelijkheden van een opslagplaats, bouwt GitHub verschillende nuttige functies op basis van deze gegevens, waaronder afhankelijkheidsbeoordeling en Dependabot-waarschuwingen. Meer informatie vindt u in de documentatie van GitHub over het beveiligen van uw toeleveringsketen.

vcpkg-integratie met de GitHub-afhankelijkheidsgrafiek

vcpkg biedt experimentele ondersteuning voor het vullen van de GitHub-afhankelijkheidsgrafiek vanuit een GitHub Actions-werkstroom. Als u deze functie wilt inschakelen, moet u de volgende wijzigingen aanbrengen in uw werkstroombestand:

  • Stel de VCPKG_FEATURE_FLAGS omgevingsvariabele in om de waarde dependencygraphop te nemen.
  • Stel de GITHUB_TOKEN omgevingsvariabele in op de waarde ${{ secrets.GITHUB_TOKEN }}.
  • Geef GitHub Actions schrijftoegang tot de inhoud van uw opslagplaats door het volgende machtigingsblok op te nemen. Dit is vereist om de metagegevens van de afhankelijkheidsgrafiek naar uw opslagplaats te schrijven. Hiermee worden geen commits aan uw opslagplaats toegevoegd en worden er geen andere wijzigingen aangebracht aan de inhoud van uw opslagplaats.
permissions:
  contents: write

U moet de GitHub-afhankelijkheidsgrafiek inschakelen in de instellingen van uw opslagplaats (standaard ingeschakeld voor openbare opslagplaatsen). Voor privéopslagplaatsen volgt u de GitHub-documentatie om de afhankelijkheidsgrafiek in te schakelen om aan deze vereiste te voldoen.

Bekende beperkingen

  • De versie van vcpkg die is meegeleverd met GitHub Actions-uitvoerders, is mogelijk niet bijgewerkt. Gebruik de meest recente versie van vcpkg om toegang te krijgen tot deze functie en de meest recente bugfixes te ontvangen.
  • Functies die afhankelijk zijn van de afhankelijkheidsgrafiek, zoals Dependabot-waarschuwingen en Dependabot-pull-aanvragen, zijn nog niet beschikbaar. Laat het ons weten als u geïnteresseerd bent in deze functies!

Voorbeeldwerkstroom voor GitHub Actions

Opmerking

In dit voorbeeld wordt ervan uitgegaan dat er een geldig manifest is waarin enkele afhankelijke vcpkg.json poorten worden vermeld. Zie onze documentatie over de manifestmodus voor meer informatie over manifesten.

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