Tutorial: Configurar um cache binário vcpkg usando pacotes do GitHub em um fluxo de trabalho de ações do GitHub
Observação
Este tutorial usa feeds NuGet hospedados em Pacotes do 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.
O GitHub Packages oferece um repositório conveniente para seus pacotes binários NuGet produzidos pelo vcpkg. Neste tutorial, mostraremos como configurar um cache binário no fluxo de trabalho de Ações do GitHub que usa Pacotes do GitHub como armazenamento remoto.
Neste tutorial, você aprenderá como:
Pré-requisitos
- Um editor de código
- Um repositório do GitHub usando ações do GitHub
- Um projeto usando vcpkg
1 - Forneça um token de acesso pessoal do GitHub
Siga as instruções do GitHub para gerar um Personal Access Token (PAT) clássico para seu repositório, certifique-se de dar a ele as packages:write
permissões e packages:read
.
Em seguida, adicione seu PAT do GitHub como um segredo disponível nos fluxos de trabalho do GitHub Action do seu repositório. Neste tutorial, assumimos que você nomeia seu segredo como GH_PACKAGES_TOKEN
.
O PAT interno fornecido por GITHUB_TOKEN
só tem a packages:read
permissão, você pode usá-lo se você planeja ter um cache binário somente leitura em seu fluxo de trabalho.
2 – Bootstrap vcpkg
vcpkg adquire sua própria cópia do nuget.exe
executável que ele usa durante operações de cache binário. Este tutorial usa o vcpkg adquirido nuget.exe
.
Adicione uma etapa para inicializar 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 pressupõe que vcpkg está localizado em uma vcpkg
pasta na raiz do repositório.
3 - Configurar variáveis de ambiente necessárias
Adicione as seguintes variáveis de ambiente ao 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"
Youo pode precisar substituir o valor de VCPKG_EXE
pelo local do executável vcpkg gerado na etapa bootstrap vcpkg .
Nesta etapa que 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 do GitHub como fonte NuGet
O vcpkg fetch nuget
comando gera a localização do vcpkg adquirido nuget.exe
, baixando o executável se necessário.
Adicione a seguinte etapa no arquivo de fluxo de trabalho do GitHub Actions:
- 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.GH_PACKAGES_TOKEN }}"
.$(${{ env.VCPKG_EXE }} fetch nuget) `
setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" `
-Source "${{ env.FEED_URL }}"
No Linux, você precisa mono
executar nuget.exe
o . Os executores do GitHub Actions usando o Ubuntu vêm com mono
pré-instalado. Caso contrário, você pode instalar mono
usando o gerenciador de pacotes do sistema da sua distribuição.
- 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.GH_PACKAGES_TOKEN }}"
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" \
-Source "${{ env.FEED_URL }}"
Talvez seja necessário substituir GH_PACKAGES_TOKEN
pelo nome secreto correto que você deu ao PAT gerado na etapa fornecer um Token de Acesso Pessoal do GitHub.
Pronto! O vcpkg agora carregará ou restaurará pacotes do seu feed NuGet hospedado em Pacotes do GitHub dentro do seu fluxo de trabalho do GitHub Acions.
Próximas etapas
Aqui estão outras tarefas para tentar em seguida:
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de