Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 — Konfigurowanie uwierzytelniania dla pakietów GitHub
W tym samouczku jest używana funkcja GITHUB_TOKEN wbudowana w GitHub Actions. Aby włączyć zarówno dostęp do odczytu, jak i zapisu w pakietach GitHub, dodaj następujący permissions blok do przepływu pracy:
permissions:
packages: write
GITHUB_TOKEN Daje to niezbędne packages:write i packages:read uprawnienia.
Użycie GITHUB_TOKEN ma kilka zalet:
- Nie trzeba tworzyć ani zarządzać dodatkowymi sekretami
- Działa automatycznie w przypadku żądań przyciągnięcia z forka (z dostępem tylko do odczytu)
- Zakres działania określonego repozytorium i przepływu pracy
Uwaga
Alternatywnie możesz użyć klasycznego osobistego tokenu dostępu (PAT), jeśli potrzebujesz dostępu między repozytorium lub innych zaawansowanych scenariuszy. Postępuj zgodnie z instrukcjami usługi GitHub, aby wygenerować klasyczny osobisty token dostępu (PAT) z uprawnieniami packages:write , packages:read a następnie dodać go jako wpis tajny w repozytorium i użyć ${{ secrets.YOUR_PAT_NAME }} zamiast ${{ secrets.GITHUB_TOKEN }} w poniższych przykładach.
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.exepliku vcpkg, pobierając plik wykonywalny w razie potrzeby.
Dodaj następujący krok do pliku przepływu pracy, aby skonfigurować źródło NuGet za pomocą polecenia 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 }}"
W systemie Linux należy mono wykonać polecenie nuget.exe. Możesz zainstalować mono za pomocą menedżera pakietów systemowych swojej dystrybucji.
apt install mono-complete
Należy pamiętać, że ubuntu-22.04 agenty GitHub Actions są dostarczane z wstępnie mono zainstalowanymi elementami, ale począwszy od ubuntu-24.04 (na co ubuntu-latest obecnie wskazuje), mono nie są już preinstalowane.
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 }}"
Uwaga
Wartość domyślna GITHUB_TOKEN udostępniana przez funkcję GitHub Actions nie ma wymaganych uprawnień do przekazywania lub pobierania buforowanych pakietów.
Aby włączyć buforowanie pakietów w pakietach GitHub, użyj osobistego tokenu dostępu (PAT) i upewnij się, że zawiera on następujące zakresy:
packages:readpackages:write
Zapisz klucz dostępu jako wpis tajny repozytorium (na przykład VCPKG_PAT_TOKEN) i odwołuj się do niego w przepływie pracy:
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
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: