Pontos de integração do GitHub

Armazenando em cache binários criados pelo vcpkg para seus fluxos de trabalho do GitHub Actions

O recurso de cache binário do vcpkg reduz o tempo necessário para criar projetos que usam as Ações do GitHub para integração contínua. Para obter mais informações, leia a documentação do recurso de cache binário.

O provedor de cache NuGet dos pacotes GitHub

Os pacotes do GitHub permitem que os repositórios publiquem artefatos binários para uso público ou privado. Além de hospedar armazenamento para pacotes publicados, o suporte a pacotes GitHub oferece uma interface de registro NuGet que vcpkg pode usar como um cache binário, com o provedor de nuget origem binária.

O gráfico de dependência do GitHub

Observação

Esta secção abrange uma característica experimental do vcpkg que pode ser alterada ou removida a qualquer momento.

Sugestão

Estamos a desenvolver ativamente esta funcionalidade e gostaríamos de ouvir a sua opinião. Deixe-nos saber se você tem algum pensamento sobre a funcionalidade atual ou qualquer funcionalidade desejada por e-mail vcpkg@microsoft.com ou arquivando um problema no vcpkg. Se você tiver feedback sobre qualquer um dos recursos do GitHub que isso permite, informe-nos disso também e vamos garantir que ele chegue às pessoas certas no GitHub.

Sobre o gráfico de dependência do GitHub

O gráfico de dependência do GitHub armazena o conjunto de dependências de um repositório. Além de ser capaz de visualizar as dependências de um repositório, o GitHub cria vários recursos úteis sobre esses dados, incluindo revisão de dependência e alertas Dependabot. Saiba mais na documentação do GitHub sobre como proteger sua cadeia de suprimentos.

Integração do vcpkg com o gráfico de dependência do GitHub

O vcpkg tem suporte experimental para preencher o gráfico de dependência do GitHub de dentro de um fluxo de trabalho de Ações do GitHub. Para habilitar esse recurso, faça as seguintes alterações no arquivo de fluxo de trabalho:

  • Defina a VCPKG_FEATURE_FLAGS variável de ambiente para incluir o valor dependencygraph.
  • Defina a GITHUB_TOKEN variável de ambiente para o valor ${{ secrets.GITHUB_TOKEN }}.
  • Dê às Ações do GitHub acesso de gravação ao conteúdo do seu repositório ao incluir o bloco de permissões seguinte. Isso é necessário para gravar os metadados do gráfico de dependência no repositório. Isso não adicionará nenhum compromisso ao seu repositório ou fará qualquer outra modificação no conteúdo do seu repositório.
permissions:
  contents: write

Você deve habilitar o gráfico de dependência do GitHub nas configurações do repositório (ativado por padrão em repositórios públicos). Para repositórios privados, siga a documentação do GitHub para habilitar o gráfico de dependência para atender a esse requisito.

Limitações conhecidas

  • A versão do vcpkg integrada com os runners do GitHub Actions pode não estar atualizada. Use a versão mais recente do vcpkg para ter acesso a esse recurso e receber as correções de bugs mais recentes.
  • Recursos que dependem do gráfico de dependência, como alertas Dependabot e solicitações pull Dependabot, ainda não estão disponíveis. Por favor, deixe-nos saber se você está interessado nesses recursos!

Exemplo de fluxo de trabalho de Ações do GitHub

Observação

Este exemplo pressupõe que haja um manifesto válido vcpkg.json que lista algumas portas dependentes. Para obter mais informações sobre manifestos, consulte nossa documentação sobre o modo de manifesto.

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