教學課程:在 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:write
和 packages: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 摘要上傳或還原套件。
下一步
以下是接下來要嘗試的其他工作: