Tindakan ini menyiapkan lingkungan .NET CLI untuk digunakan dalam tindakan dengan:
Catatan : Pelari yang dihosting GitHub memiliki beberapa versi .NET SDK yang sudah diinstal sebelumnya. Versi yang diinstal dapat berubah. Silakan merujuk ke dokumentasi: Perangkat lunak yang diinstal pada pelari yang dihosting github untuk versi .NET SDK yang saat ini tersedia.
Lihat action.yml
Dasar :
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
- run : dotnet build <my project>
Peringatan : Kecuali versi konkret ditentukan dalam file
global.json
, versi .NET terbaru yang diinstal pada runner (termasuk versi pra-instal) akan digunakan secara default . Silakan merujuk ke dokumentasi untuk versi .NET SDK yang saat ini terinstal.
Instalasi beberapa versi :
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
with :
dotnet-version : |
3.1.x
5.0.x
- run : dotnet build <my project>
Input dotnet-version
mendukung sintaks berikut:
3.1
, termasuk versi prarilis (pratinjau, rc).NET 5.0
. Menginstal versi terbaru dari rilis SDK tertentu, termasuk versi prarilis (pratinjau, rc). dotnet-quality
Masukan ini menyiapkan tindakan untuk menginstal versi terbaru dengan kualitas yang ditentukan di saluran. Nilai yang mungkin dari dotnet-quality
adalah: daily , Signed , validated , preview , ga .
Catatan : input
dotnet-quality
hanya dapat digunakan dengan versi .NET SDK dalam format 'A.B', 'ABx', 'A', 'Ax' dan 'ABCxx' dengan versi mayor lebih tinggi dari 5. Dalam kasus lain , masukandotnet-quality
akan diabaikan.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 6.0.x '
dotnet-quality : ' preview '
- run : dotnet build <my project>
global-json-file
tindakan setup-dotnet
dapat membaca versi .NET SDK dari file global.json
. Input global-json-file
digunakan untuk menentukan jalur ke global.json
. Jika file yang diberikan ke input global-json-file
tidak ada, tindakan akan gagal karena kesalahan.
Catatan : Jika input
dotnet-version
danglobal-json-file
digunakan, versi dari kedua input akan diinstal.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
global-json-file : csharp/global.json
- run : dotnet build <my project>
working-directory : csharp
Tindakan ini memiliki fungsionalitas bawaan untuk menyimpan cache dan memulihkan dependensi. Ini menggunakan toolkit/cache di bawah tenda untuk menyimpan data paket global tetapi memerlukan lebih sedikit pengaturan konfigurasi. Input cache
bersifat opsional, dan cache dinonaktifkan secara default.
Tindakan ini mencari file NuGet Lock ( packages.lock.json
) di root repositori, menghitung hashnya dan menggunakannya sebagai bagian dari kunci cache. Jika file kunci tidak ada, tindakan ini menimbulkan kesalahan. Gunakan cache-dependency-path
untuk kasus ketika beberapa file ketergantungan digunakan, atau file tersebut terletak di subdirektori berbeda.
Peringatan : Caching paket NuGet tersedia sejak .NET SDK 2.1.500 dan 2.2.100 karena file kunci NuGet hanya tersedia untuk NuGet 4.9 dan yang lebih baru.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
Catatan : Tindakan ini hanya akan memulihkan folder
global-packages
, jadi Anda mungkin akan mendapatkan kesalahan NU1403 saat menjalankandotnet restore
. Untuk menghindari hal ini, Anda dapat menggunakan opsiDisableImplicitNuGetFallbackFolder
.
< PropertyGroup >
< DisableImplicitNuGetFallbackFolder >true</ DisableImplicitNuGetFallbackFolder >
</ PropertyGroup >
Catatan : Gunakan variabel lingkungan
NUGET_PACKAGES
jika tersedia. Beberapa pelari aksi sudah memiliki perpustakaan yang sangat besar. (mis. Xamarin)
env :
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
env :
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
cache-dependency-path : subdir/packages.lock.json
- run : dotnet restore --locked-mode
Menggunakan setup-dotnet
dimungkinkan untuk menggunakan sintaks matriks untuk menginstal beberapa versi .NET SDK:
jobs :
build :
runs-on : ubuntu-latest
strategy :
matrix :
dotnet : [ '2.1.x', '3.1.x', '5.0.x' ]
name : Dotnet ${{ matrix.dotnet }} sample
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
with :
dotnet-version : ${{ matrix.dotnet }}
- name : Execute dotnet
run : dotnet build <my project>
Catatan : Kecuali versi konkret ditentukan dalam file
global.json
, versi .NET terbaru yang diinstal pada runner (termasuk versi pra-instal) akan digunakan secara default. Untuk mengontrol perilaku ini, Anda mungkin ingin menggunakan fileglobal.json
sementara:
Pengujian matriks dengan pembuatan global.json sementara
jobs :
build :
runs-on : ubuntu-latest
strategy :
matrix :
dotnet : [ '2.1.x', '3.1.x', '5.0.x' ]
name : Dotnet ${{ matrix.dotnet }} sample
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : ${{ matrix.dotnet }}
- name : Create temporary global.json
run : echo '{"sdk":{"version": "${{ steps.stepid.outputs.dotnet-version }}"}}' > ./global.json
- name : Execute dotnet
run : dotnet build <my project>
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
source-url : https://nuget.pkg.github.com/<owner>/index.json
env :
NUGET_AUTH_TOKEN : ${{secrets.GITHUB_TOKEN}}
- run : dotnet build <my project>
- name : Create the package
run : dotnet pack --configuration Release <my project>
- name : Publish the package to GPR
run : dotnet nuget push <my project>/bin/Release/*.nupkg
- uses : actions/setup-dotnet@v4
with :
source-url : https://pkgs.dev.azure.com/<your-organization>/_packaging/<your-feed-name>/nuget/v3/index.json
env :
NUGET_AUTH_TOKEN : ${{secrets.AZURE_DEVOPS_PAT}} # Note, create a secret with this name in Settings
- name : Publish the package to Azure Artifacts
run : dotnet nuget push <my project>/bin/Release/*.nupkg
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 3.1.x
- name : Publish the package to nuget.org
run : dotnet nuget push */bin/Release/*.nupkg -k $NUGET_AUTH_TOKEN -s https://api.nuget.org/v3/index.json
env :
NUGET_AUTH_TOKEN : ${{ secrets.NUGET_TOKEN }}
Catatan : Ini satu-satunya cara untuk memasukkan paket ke feed nuget.org untuk mesin macOS/Linux karena keterbatasan penyimpanan konfigurasi kunci API.
dotnet-version
Dengan menggunakan keluaran versi dotnet, dimungkinkan untuk menginstal versi .NET SDK tindakan.
Instalasi versi tunggal
Dalam kasus instalasi versi tunggal, output dotnet-version
berisi versi yang diinstal oleh tindakan tersebut.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : 3.1.422
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 3.1.422
Instalasi beberapa versi
Dalam kasus instalasi beberapa versi, output dotnet-version
berisi versi terbaru yang diinstal oleh tindakan tersebut.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : |
3.1.422
5.0.408
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 5.0.408
Instalasi dari global.json
Ketika masukan dotnet-version
digunakan bersama dengan masukan global-json-file
, keluaran dotnet-version
berisi versi yang diselesaikan dari global.json
.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : |
3.1.422
5.0.408
global-json-file : " ./global.json " # contains version 2.2.207
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 2.2.207
cache-hit
Nilai boolean untuk menunjukkan kecocokan persis ditemukan untuk kunci cache (mengikuti tindakan/cache)
Beberapa variabel lingkungan mungkin diperlukan untuk kasus khusus Anda atau untuk meningkatkan logging. Beberapa contoh tercantum di bawah, namun daftar lengkap dengan rincian lengkap dapat ditemukan di sini: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables
Variabel lingkungan | Keterangan | Nilai bawaan |
---|---|---|
DOTNET_INSTALL_DIR | Menentukan direktori tempat .NET SDK harus dipasang berdasarkan tindakan. | nilai default untuk setiap OS |
DOTNET_NOLOGO | Menghapus logo dan pesan telemetri dari dotnet cli yang pertama kali dijalankan | PALSU |
DOTNET_CLI_TELEMETRY_OPTOUT | Memilih untuk tidak menerima telemetri yang dikirim ke Microsoft | PALSU |
DOTNET_MULTILEVEL_LOOKUP | Mengonfigurasi apakah lokasi pemasangan global digunakan sebagai cadangan | BENAR |
NUGET_PACKAGES | Mengonfigurasi jalur ke folder global-packages NuGet | nilai default untuk setiap OS |
Nilai default variabel lingkungan DOTNET_INSTALL_DIR
dan NUGET_PACKAGES
bergantung pada sistem operasi yang digunakan pada runner:
Sistem operasi | DOTNET_INSTALL_DIR | NUGET_PACKAGES |
---|---|---|
jendela | C:Program Filesdotnet | %userprofile%.nugetpackages |
Ubuntu | /usr/share/dotnet | ~/.nuget/packages |
macOS | /Users/runner/.dotnet | ~/.nuget/packages |
Contoh penggunaan variabel lingkungan :
build :
runs-on : ubuntu-latest
env :
DOTNET_INSTALL_DIR : " path/to/directory "
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@main
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
cache : true
Skrip dan dokumentasi dalam proyek ini dirilis di bawah Lisensi MIT
Kontribusi dipersilahkan! Lihat Panduan Kontributor