GitHub 整合點
vcpkg 的二進位快取功能可減少建置使用 GitHub Actions 進行持續整合的專案所花費的時間量。 GitHub 存放庫有兩個二進位快取提供者可供 GitHub 存放庫使用、GitHub Actions 快取提供者和 GitHub Packages NuGet 快取提供者。 如需這些 GitHub 功能的詳細資訊,請參閱 GitHub Actions 快取 和 GitHub 套件。 如需 vcpkg 二進位快取的詳細資訊,請參閱我們的 二進位快取功能檔。
注意
本節涵蓋 vcpkg 的實驗功能,隨時可能會變更或移除。
GitHub Actions 快取的目的是儲存存放庫的中繼組建檔案,這些檔案不會經常在作業或工作流程執行之間變更。 對於 GitHub 使用者,GitHub Actions 快取很適合 vcpkg 的二進位快取,而且比 vcpkg 的 GitHub 套件二進位快取整合更容易設定。 GitHub 提供一些不同的工具來管理動作快取,其中包括 REST API 和命令行工具的 gh
延伸模組,以便您將工作流程的快取優化。 vcpkg 與 GitHub Actions 快取的整合是透過 x-gha
二進位來源提供者。
GitHub Packages 可讓存放庫發佈二進製成品以供公用或私人使用。 除了裝載已發佈套件的記憶體之外,GitHub Packages 還支援各種套件管理工具,方法是做為套件登錄。 vcpkg 可以使用 NuGet 登錄介面將 GitHub Packages 作為 vcpkg 二進製成品的快取,方法是使用 nuget
二進位來源提供者。 與 GitHub Packages 的整合並不簡單,因為 GitHub Actions 快取整合和管理快取二進位檔比較困難,因此 GitHub Actions 快取對於大多數使用者而言是更好的選項。
注意
本節涵蓋 vcpkg 的實驗功能,隨時可能會變更或移除。
提示
我們正積極開發這項功能,並想要聽到您的意見反應。 如果您有任何關於目前功能或任何所需功能的想法,請傳送電子郵件vcpkg@microsoft.com或在 vcpkg 中提出問題,讓我們知道。 如果您有任何可啟用的 GitHub 功能意見反應,也請讓我們知道,我們會確定它會取得 GitHub 的合適人選。
GitHub 相依性圖表會儲存存放庫的相依性集合。 除了能夠可視化存放庫的相依性之外,GitHub 會在此數據之上建置數個有用的功能,包括相依性檢閱和 Dependabot 警示。 若要深入瞭解,請參閱 GitHub 關於保護您的供應鏈檔。
vcpkg 具有實驗性支援,可從 GitHub Actions 工作流程中填入 GitHub 相依性圖表。 若要啟用此功能,請在工作流程檔案中進行下列變更:
- 設定
VCPKG_FEATURE_FLAGS
環境變數以包含 值dependencygraph
。 - 將
GITHUB_TOKEN
環境變數設定為 值${{ secrets.GITHUB_TOKEN }}
。 - 藉由包含下列許可權區塊,為 GitHub Actions 提供存放庫內容的寫入許可權。 若要將相依性圖形元數據寫入您的存放庫,則需要此專案。 這 不會 將任何認可新增至您的存放庫,也不會對存放庫的內容進行任何任何其他修改。
permissions:
contents: write
您必須在存放庫的設定中啟用 GitHub 相依性圖表(預設在公用存放庫上啟用)。 針對私人存放庫,請遵循 GitHub 檔來 啟用相依性圖表 ,以滿足此需求。
- 與 GitHub Actions 執行器配套的 vcpkg 版本可能不是最新的。 使用最新版本的 vcpkg 來取得此功能的存取權,並接收最新的錯誤修正。
- 相依於相依性圖形的功能,例如 Dependabot 警示和 Dependabot 提取要求,尚無法使用。 如果您對這些功能感興趣,請讓我們知道!
注意
此範例假設有一個有效的 vcpkg.json
指令清單會列出一些相依埠。 如需指令清單的詳細資訊,請參閱我們的 指令清單模式檔。
name: Populate dependencies
on:
push:
branches: [ main ]
workflow_dispatch:
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VCPKG_FEATURE_FLAGS: dependencygraph
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
# This will execute a dry-run, meaning that libraries will not be built and
# installed, but they will still be reported to the GitHub dependency graph.
# This step assumes `vcpkg` has been bootstrapped (run `./vcpkg/bootstrap-vcpkg`)
- name: Run vcpkg
run: ${{ github.workspace }}/vcpkg/vcpkg install --dry-run