共用方式為


教學課程:在 GitHub Actions 工作流程中使用 GitHub 套件設定 vcpkg 二進位快取

注意

本教學課程使用裝載於 GitHub 套件中的 NuGet 摘要,但其他 NuGet 摘要提供者可以使用相同的指示,例如:Azure Artifacts,且變更最少。

GitHub Packages 為 vcpkg 所產生的 NuGet 二進位套件提供方便的存放庫。 在本教學課程中,我們會示範如何在使用 GitHub Packages 作為遠端記憶體的 GitHub Actions 工作流程中設定二進位快取。

在本教學課程中,您將了解如何:

必要條件

  • 程式碼編輯器
  • 使用 GitHub Actions 的 GitHub 存放庫
  • 使用 vcpkg 的專案

1 - 提供 GitHub 個人存取令牌

遵循 GitHub 的指示, 為您的存放庫產生傳統個人存取令牌 (PAT), 請務必提供 packages:writepackages:read 許可權。

然後將 GitHub PAT 新增為 存放庫 GitHub Action 工作流程中可用的秘密。 在本教學課程中,我們假設您將秘密命名為 GH_PACKAGES_TOKEN

提供的 GITHUB_TOKEN 內建 PAT 只有 packages:read 許可權,如果您打算在工作流程中具有只讀二進位快取,則可以使用它。

2 - Bootstrap vcpkg

vcpkg 會取得它在二進位快取作業期間所使用的可執行檔複本 nuget.exe 。 本教學課程使用 vcpkg 取得的 nuget.exe

在工作流程中新增啟動程式 vcpkg 的步驟:

- name: Bootstrap vcpkg
  shell: pwsh
  run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
  shell: bash
  run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh

您可能需要將 vcpkg 啟動程式腳本的位置取代為工作流程的正確位置,本教學課程假設 vcpkg 位於 vcpkg 存放庫根目錄中的資料夾。

3 - 設定必要的環境變數

將下列環境變數新增至您的工作流程檔案(將 取代 <OWNER> 為您的 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"

您可能需要將 的值 VCPKG_EXE 取代為啟動程式 vcpkg 步驟中 產生的 vcpkg 可執行檔位置。

在此步驟中,您會設定 VCPKG_BINARY_SOURCES 使用 GitHub Packages 摘要作為二進位快取來源,請閱讀 二進位快取參考 以深入瞭解。

4 - 將 GitHub 套件新增為 NuGet 來源

此命令 vcpkg fetch nuget 會視需要輸出 vcpkg 取得 nuget.exe的位置,下載可執行檔。

在 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 }}"

在 Linux 上,您必須 mono 執行 nuget.exe。 使用Ubuntu的 GitHub Actions 執行器隨附 mono 預安裝。 否則,您可以使用散發套件的系統套件管理員進行安裝 mono

- 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 }}"

您可能需要將 取代GH_PACKAGES_TOKEN為您在提供 GitHub Personal Access Token 步驟產生的 PAT 的正確秘密名稱。

就這麼簡單! vcpkg 現在會從 GitHub Actions 工作流程內裝載於 GitHub Packages 上的 NuGet 摘要上傳或還原套件。

下一步

以下是接下來要嘗試的其他工作: