Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Tutorial ini menggunakan umpan NuGet yang dihosting dalam Paket GitHub tetapi instruksi yang sama dapat digunakan untuk penyedia umpan NuGet lainnya, misalnya: Artefak Azure, dengan perubahan minimal.
Paket GitHub menawarkan repositori yang nyaman untuk paket biner NuGet Anda yang diproduksi oleh vcpkg. Dalam tutorial ini, kami menunjukkan kepada Anda cara menyiapkan cache biner di alur kerja GitHub Actions Anda yang menggunakan Paket GitHub sebagai penyimpanan jarak jauh.
Dalam tutorial ini, Anda akan mempelajari cara:
Prasyarat
- Editor kode
- Repositori GitHub menggunakan GitHub Actions
- Proyek menggunakan vcpkg
1 - Mengonfigurasi autentikasi untuk Paket GitHub
Tutorial ini menggunakan bawaan GITHUB_TOKEN yang disediakan oleh GitHub Actions. Untuk mengaktifkan akses baca dan tulis ke Paket GitHub, tambahkan blok berikut permissions ke alur kerja Anda:
permissions:
packages: write
Ini memberikan GITHUB_TOKEN izin dan packages:write yang diperlukanpackages:read.
Menggunakan GITHUB_TOKEN memiliki beberapa keuntungan:
- Tidak perlu membuat atau mengelola rahasia tambahan
- Bekerja secara otomatis untuk permintaan pull dari fork (dengan akses baca-saja)
- Dicakup ke repositori dan eksekusi alur kerja tertentu
Nota
Atau, Anda dapat menggunakan Token Akses Pribadi (PAT) klasik jika Anda memerlukan akses lintas repositori atau skenario lanjutan lainnya. Ikuti instruksi GitHub untuk menghasilkan Token Akses Pribadi (PAT) klasik dengan packages:write dan packages:read izin, lalu tambahkan sebagai rahasia di repositori Anda dan gunakan ${{ secrets.YOUR_PAT_NAME }} alih-alih ${{ secrets.GITHUB_TOKEN }} dalam contoh di bawah ini.
2 - Bootstrap vcpkg
vcpkg memperoleh salinannya sendiri dari nuget.exe executable yang digunakannya selama operasi pengelolaan cache biner. Tutorial ini menggunakan vcpkg-acquired nuget.exe.
Tambahkan langkah untuk bootstrap vcpkg di alur kerja Anda:
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
Anda mungkin perlu mengganti lokasi skrip bootstrap vcpkg dengan yang benar untuk alur kerja Anda, tutorial ini mengasumsikan bahwa vcpkg terletak di vcpkg folder di akar repositori.
3 - Menyiapkan variabel lingkungan yang diperlukan
Tambahkan variabel lingkungan berikut ke file alur kerja Anda (ganti <OWNER> dengan nama pengguna atau nama organisasi GitHub Anda):
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"
Anda mungkin perlu mengganti nilai VCPKG_EXE dengan lokasi executable vcpkg yang dihasilkan dalam langkah bootstrap vcpkg .
Dalam langkah ini Anda mengonfigurasi VCPKG_BINARY_SOURCES untuk menggunakan umpan Paket GitHub Anda sebagai sumber penembolokan biner, baca referensi penembolokan biner untuk mempelajari lebih lanjut.
4 - Tambahkan Paket GitHub sebagai sumber NuGet
Perintah vcpkg fetch nuget menghasilkan lokasi dari nuget.exe yang diperoleh vcpkg, dan mengunduh yang dapat dieksekusi jika perlu.
Tambahkan langkah berikut ke file alur kerja Anda untuk mengonfigurasi sumber NuGet dengan :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 }}"
Di Linux, Anda perlu mono untuk menjalankan nuget.exe. Anda dapat menginstal mono menggunakan manajer paket sistem distribusi Anda:
apt install mono-complete
Perhatikan bahwa ubuntu-22.04 pelari GitHub Actions dilengkapi dengan mono yang telah diinstal sebelumnya, tetapi dimulai dengan ubuntu-24.04 (yang ubuntu-latest saat ini menunjuk ke), mono tidak lagi diinstal sebelumnya.
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 }}"
Nota
Default GITHUB_TOKEN yang disediakan oleh GitHub Actions tidak memiliki izin yang diperlukan untuk mengunggah atau mengunduh paket cache.
Untuk mengaktifkan penyimpanan cache paket ke Paket GitHub, gunakan token akses pribadi (PAT) dan pastikan itu mencakup cakupan berikut:
packages:readpackages:write
Simpan PAT sebagai rahasia repositori (misalnya, VCPKG_PAT_TOKEN) dan referensikan di alur kerja Anda:
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
Dan itu saja! vcpkg sekarang akan mengunggah atau memulihkan paket dari umpan NuGet Anda yang dihosting di Paket GitHub di dalam alur kerja GitHub Actions Anda.
Langkah selanjutnya
Berikut adalah tugas lain untuk dicoba berikutnya: