Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Este tutorial usa feeds NuGet hospedados em Pacotes GitHub, mas as mesmas instruções podem ser usadas para outros provedores de feed NuGet, por exemplo: Artefatos do Azure, com alterações mínimas.
Os pacotes GitHub oferecem um repositório conveniente para seus pacotes binários NuGet produzidos pela vcpkg. Neste tutorial, mostramos como configurar um cache binário em seu fluxo de trabalho de Ações do GitHub que usa os Pacotes do GitHub como armazenamento remoto.
Neste tutorial, você aprenderá a:
Pré-requisitos
- Um editor de código
- Um repositório GitHub usando ações do GitHub
- Um projeto usando vcpkg
1 - Configurar a autenticação para pacotes GitHub
Este tutorial usa o built-in GITHUB_TOKEN fornecido pelo GitHub Actions. Para habilitar o acesso de leitura e gravação aos pacotes do GitHub, adicione o seguinte permissions bloco ao seu fluxo de trabalho:
permissions:
packages: write
Isso concede o necessário GITHUB_TOKEN e packages:write permissõespackages:read.
A utilização GITHUB_TOKEN tem várias vantagens:
- Não há necessidade de criar ou gerenciar segredos adicionais
- Funciona automaticamente para solicitações pull de forks (com acesso somente leitura)
- Escopo para o repositório específico e a execução do fluxo de trabalho
Observação
Como alternativa, você pode usar um token de acesso pessoal (PAT) clássico se precisar de acesso entre repositórios ou outros cenários avançados. Siga as instruções do GitHub para gerar um Token de Acesso Pessoal (PAT) clássico com packages:write e packages:read permissões, adicione-o como um segredo em seu repositório e use ${{ secrets.YOUR_PAT_NAME }} em vez de ${{ secrets.GITHUB_TOKEN }} nos exemplos abaixo.
2 - Bootstrap vcpkg
vcpkg adquire a sua própria cópia do executável que usa durante operações de armazenamento em cache binário. Este tutorial usa o vcpkg-adquirido nuget.exe.
Adicione uma etapa para inicializar o vcpkg em seu fluxo de trabalho:
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
Talvez seja necessário substituir o local do script de bootstrap vcpkg pelo correto para seu fluxo de trabalho, este tutorial assume que o vcpkg está localizado em uma vcpkg pasta na raiz do repositório.
3 - Configurar as variáveis de ambiente necessárias
Adicione as seguintes variáveis de ambiente ao seu arquivo de fluxo de trabalho (substitua <OWNER> pelo nome de usuário ou nome da organização do GitHub):
env:
USERNAME: <OWNER>
VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg
FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
VCPKG_BINARY_SOURCES: "clear;nuget,https://nuget.pkg.github.com/<OWNER>/index.json,readwrite"
Pode ser necessário substituir o valor de VCPKG_EXE pela localização do executável vcpkg gerado na etapa de bootstrap do vcpkg.
Nesta etapa, você está configurando VCPKG_BINARY_SOURCES para usar seu feed de pacotes do GitHub como uma fonte de cache binário, leia a referência de cache binário para saber mais.
4 - Adicionar pacotes GitHub como uma fonte NuGet
O comando vcpkg fetch nuget exibe a localização do nuget.exe obtido pelo vcpkg, transferindo o executável, se necessário.
Adicione a seguinte etapa ao seu arquivo de fluxo de trabalho para configurar a origem do NuGet com o :GITHUB_TOKEN
permissions:
packages: write
jobs:
build:
runs-on: windows-latest
steps:
# ... other steps ...
- name: Add NuGet sources
shell: pwsh
run: |
.$(${{ env.VCPKG_EXE }} fetch nuget) `
sources add `
-Source "${{ env.FEED_URL }}" `
-StorePasswordInClearText `
-Name GitHubPackages `
-UserName "${{ env.USERNAME }}" `
-Password "${{ secrets.GITHUB_TOKEN }}"
.$(${{ env.VCPKG_EXE }} fetch nuget) `
setapikey "${{ secrets.GITHUB_TOKEN }}" `
-Source "${{ env.FEED_URL }}"
No Linux, você precisa do mono para executar nuget.exe. Você pode instalar mono usando o gerenciador de pacotes do sistema da sua distribuição:
apt install mono-complete
Observe que ubuntu-22.04 os corredores do GitHub Actions vêm com mono pré-instalados, mas começando com ubuntu-24.04 (o que ubuntu-latest atualmente aponta), mono não vem mais pré-instalado.
permissions:
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
# ... other steps ...
- name: Add NuGet sources
shell: bash
env:
VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg
USERNAME: <OWNER>
FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
run: |
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
sources add \
-Source "${{ env.FEED_URL }}" \
-StorePasswordInClearText \
-Name GitHubPackages \
-UserName "${{ env.USERNAME }}" \
-Password "${{ secrets.GITHUB_TOKEN }}"
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-Source "${{ env.FEED_URL }}"
Observação
O padrão GITHUB_TOKEN fornecido pelo GitHub Actions não tem as permissões necessárias para carregar ou baixar pacotes armazenados em cache.
Para habilitar o cache de pacotes para pacotes do GitHub, use um PAT (Personal Access Token) em vez disso e verifique se ele inclui os seguintes escopos:
packages:readpackages:write
Armazene a PAT como um segredo de repositório (por exemplo, VCPKG_PAT_TOKEN) e faça referência a ela no seu fluxo de trabalho:
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
E é isso! O vcpkg agora carregará ou restaurará pacotes do seu feed NuGet hospedado nos Pacotes do GitHub dentro do seu fluxo de trabalho de Ações do GitHub.
Próximos passos
Aqui estão outras tarefas para tentar a seguir: