Samouczek: konfigurowanie pamięci podręcznej binarnej vcpkg przy użyciu pakietów GitHub w przepływie pracy funkcji GitHub Actions
Uwaga
W tym samouczku są używane kanały informacyjne NuGet hostowane w pakietach GitHub, ale te same instrukcje mogą być używane dla innych dostawców źródeł danych NuGet, na przykład: Azure Artifacts, z minimalnymi zmianami.
Pakiety GitHub oferują wygodne repozytorium pakietów binarnych NuGet utworzonych przez program vcpkg. W tym samouczku pokazano, jak skonfigurować pamięć podręczną binarną w przepływie pracy funkcji GitHub Actions, który używa pakietów GitHub jako magazynu zdalnego.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
Wymagania wstępne
- Edytor kodu
- Repozytorium GitHub korzystające z funkcji GitHub Actions
- Projekt korzystający z narzędzia vcpkg
1 — Udostępnianie osobistego tokenu dostępu w usłudze GitHub
Postępuj zgodnie z instrukcjami usługi GitHub, aby wygenerować klasyczny osobisty token dostępu (PAT) dla repozytorium, upewnij się, że nadaj packages:write
mu uprawnienia i packages:read
.
Następnie dodaj swój identyfikator PAT usługi GitHub jako wpis tajny dostępny w przepływach pracy akcji usługi GitHub repozytorium. W tym samouczku przyjęto założenie, że nazwa wpisu tajnego to GH_PACKAGES_TOKEN
.
Wbudowany dostęp warunkowy udostępniany tylko przez GITHUB_TOKEN
program ma packages:read
uprawnienia, można go użyć, jeśli planujesz mieć w przepływie pracy pamięć podręczną binarną tylko do odczytu.
2 — Bootstrap vcpkg
Narzędzie vcpkg uzyskuje własną kopię nuget.exe
pliku wykonywalnego, którego używa podczas operacji buforowania binarnego. W tym samouczku jest używany element vcpkg-acquired nuget.exe
.
Dodaj krok do bootstrap vcpkg w przepływie pracy:
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
Może być konieczne zastąpienie lokalizacji skryptu bootstrap narzędzia vcpkg poprawnym dla przepływu pracy. W tym samouczku przyjęto założenie, że narzędzie vcpkg znajduje się w vcpkg
folderze głównym repozytorium.
3 — Konfigurowanie wymaganych zmiennych środowiskowych
Dodaj następujące zmienne środowiskowe do pliku przepływu pracy (zastąp <OWNER>
ciąg nazwą użytkownika lub nazwą organizacji usługi 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"
Może być konieczne zastąpienie wartości VCPKG_EXE
wartością lokalizacji pliku wykonywalnego vcpkg wygenerowanego w kroku bootstrap vcpkg .
W tym kroku konfigurujesz VCPKG_BINARY_SOURCES
użycie źródła pakietów GitHub jako źródła buforowania binarnego, przeczytaj dokumentację buforowania binarnego, aby dowiedzieć się więcej.
4 — Dodawanie pakietów GitHub jako źródła NuGet
Polecenie vcpkg fetch nuget
zwraca lokalizację pobranego nuget.exe
pliku vcpkg, pobierając plik wykonywalny w razie potrzeby.
Dodaj następujący krok w pliku przepływu pracy funkcji 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 }}"
W systemie Linux należy mono
wykonać polecenie nuget.exe
. Moduły uruchamiacze funkcji GitHub Actions korzystające z mono
systemu Ubuntu są wstępnie zainstalowane. W przeciwnym razie można zainstalować mono
za pomocą menedżera pakietów systemowych dystrybucji.
- 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 }}"
Może być konieczne zastąpienie GH_PACKAGES_TOKEN
poprawną nazwą wpisu tajnego nadaną tokenowi dostępu wygenerowanemu w kroku udostępniania osobistego tokenu dostępu w usłudze GitHub.
I to wszystko. Narzędzie vcpkg będzie teraz przekazywać lub przywracać pakiety z kanału informacyjnego NuGet hostowanego w pakietach GitHub w przepływie pracy funkcji GitHub Actions.
Następne kroki
Poniżej przedstawiono inne zadania do wypróbowania:
- Zmienianie domyślnej lokalizacji pamięci podręcznej binarnej
- Konfigurowanie lokalnej pamięci podręcznej binarnej
- Konfigurowanie pamięci podręcznej binarnej przy użyciu źródła danych NuGet
- Konfigurowanie binarnej pamięci podręcznej w przepływie pracy funkcji GitHub Actions przy użyciu pamięci podręcznej funkcji GitHub Actions