Gunakan .NET SDK di lingkungan integrasi berkelanjutan (CI)

Artikel ini menguraikan cara menggunakan .NET SDK dan alatnya di server build. Toolset .NET berfungsi secara interaktif, di mana pengembang mengetik perintah pada prompt perintah, dan secara otomatis, di mana server integrasi berkelanjutan (CI) menjalankan skrip build. Perintah, opsi, input, dan outputnya sama, dan satu-satunya hal yang Anda berikan adalah cara untuk memperoleh alat dan sistem untuk membangun aplikasi Anda. Artikel ini berfokus pada skenario akuisisi alat untuk CI dengan rekomendasi tentang cara merancang dan menyusun skrip build Anda.

Opsi penginstalan untuk server build CI

Jika Anda menggunakan GitHub, penginstalannya mudah. Anda dapat mengandalkan GitHub Actions untuk menginstal .NET SDK di alur kerja Anda. Cara yang disarankan untuk menginstal .NET SDK dalam alur kerja adalah dengan actions/setup-net-core-sdk tindakan . Untuk informasi selengkapnya, lihat tindakan Siapkan .NET Core SDK di marketplace GitHub. Untuk contoh cara kerjanya, lihat Mulai Cepat: Membuat alur kerja GitHub validasi build.

Penginstal asli

Alat penginstal asli tersedia untuk macOS, Linux, dan Windows. Alat penginstal memerlukan akses admin (sudo) ke server build. Keuntungan menggunakan alat penginstal asli adalah menginstal semua dependensi asli yang diperlukan agar alat berjalan. Alat penginstal asli juga menyediakan instalasi SDK di seluruh sistem.

Pengguna macOS harus menggunakan alat penginstal PKG. Di Linux, ada pilihan untuk menggunakan manajer paket berbasis umpan, seperti apt-get untuk Ubuntu atau yum untuk CentOS, atau menggunakan paket itu sendiri, DEB atau RPM. Di Windows, gunakan alat penginstal MSI.

Biner stabil terbaru ditemukan di unduhan .NET. Jika Anda ingin menggunakan alat pra-rilis terbaru (dan berpotensi tidak stabil), gunakan tautan yang disediakan di repositori GitHub dotnet/installer. Untuk distribusi Linux, tar.gz arsip (juga dikenal sebagai tarballs) tersedia; gunakan skrip penginstalan dalam arsip untuk menginstal .NET.

Skrip penginstal

Menggunakan skrip penginstal memungkinkan penginstalan non-administratif di server build Anda dan otomatisasi yang mudah untuk mendapatkan alat. Skrip mengurus pengunduhan alat dan mengekstraknya ke lokasi default atau yang ditentukan untuk digunakan. Anda juga dapat menentukan versi alat yang ingin Anda instal dan apakah Anda ingin menginstal seluruh SDK atau hanya runtime bersama.

Skrip penginstal diotomatisasi untuk dijalankan di awal build untuk mengambil dan menginstal versi SDK yang diinginkan. Versi yang diinginkan adalah versi SDK apa pun yang diperlukan proyek Anda untuk dibuat. Skrip memungkinkan Anda menginstal SDK di direktori lokal di server, menjalankan alat dari lokasi yang diinstal, lalu membersihkan (atau membiarkan layanan CI membersihkan) setelah build. Ini menyediakan enkapsulasi dan isolasi untuk seluruh proses build Anda. Referensi skrip penginstalan ditemukan di artikel dotnet-install .

Catatan

Azure DevOps

Saat menggunakan skrip penginstal, dependensi asli tidak diinstal secara otomatis. Anda harus menginstal dependensi asli jika sistem operasi tidak memilikinya. Untuk informasi selengkapnya, lihat dependensi dan persyaratan .NET.

Contoh penyiapan CI

Bagian ini menjelaskan penyiapan manual menggunakan PowerShell atau skrip bash, bersama dengan deskripsi solusi CI perangkat lunak sebagai layanan (SaaS). Solusi SaaS CI yang dicakup adalah Travis CI, AppVeyor, dan Azure Pipelines. Untuk GitHub Actions, lihat GitHub Actions dan .NET

Penyiapan manual

Setiap layanan SaaS memiliki metodenya untuk membuat dan mengonfigurasi proses build. Jika Anda menggunakan solusi SaaS yang berbeda dari yang tercantum atau memerlukan penyesuaian di luar dukungan yang telah dikemas sebelumnya, Anda harus melakukan setidaknya beberapa konfigurasi manual.

Secara umum, penyiapan manual mengharuskan Anda untuk memperoleh versi alat (atau build alat malam terbaru) dan menjalankan skrip build Anda. Anda dapat menggunakan skrip PowerShell atau bash untuk mengatur perintah .NET atau menggunakan file proyek yang menguraikan proses build. Bagian orkestrasi menyediakan detail selengkapnya tentang opsi ini.

Setelah Anda membuat skrip yang melakukan penyiapan server build CI manual, gunakan di komputer dev Anda untuk membangun kode Anda secara lokal untuk tujuan pengujian. Setelah Anda mengonfirmasi bahwa skrip berjalan dengan baik secara lokal, sebarkan ke server build CI Anda. Skrip PowerShell yang relatif sederhana menunjukkan cara mendapatkan .NET SDK dan menginstalnya di server build Windows:

Anda menyediakan implementasi untuk proses build Anda di akhir skrip. Skrip memperoleh alat lalu menjalankan proses build Anda.

$ErrorActionPreference="Stop"
$ProgressPreference="SilentlyContinue"

# $LocalDotnet is the path to the locally-installed SDK to ensure the
#   correct version of the tools are executed.
$LocalDotnet=""
# $InstallDir and $CliVersion variables can come from options to the
#   script.
$InstallDir = "./cli-tools"
$CliVersion = "6.0.7"

# Test the path provided by $InstallDir to confirm it exists. If it
#   does, it's removed. This is not strictly required, but it's a
#   good way to reset the environment.
if (Test-Path $InstallDir)
{
    rm -Recurse $InstallDir
}
New-Item -Type "directory" -Path $InstallDir

Write-Host "Downloading the CLI installer..."

# Use the Invoke-WebRequest PowerShell cmdlet to obtain the
#   installation script and save it into the installation directory.
Invoke-WebRequest `
    -Uri "https://dot.net/v1/dotnet-install.ps1" `
    -OutFile "$InstallDir/dotnet-install.ps1"

Write-Host "Installing the CLI requested version ($CliVersion) ..."

# Install the SDK of the version specified in $CliVersion into the
#   specified location ($InstallDir).
& $InstallDir/dotnet-install.ps1 -Version $CliVersion `
    -InstallDir $InstallDir

Write-Host "Downloading and installation of the SDK is complete."

# $LocalDotnet holds the path to dotnet.exe for future use by the
#   script.
$LocalDotnet = "$InstallDir/dotnet"

# Run the build process now. Implement your build script here.

Travis CI

Anda dapat mengonfigurasi Travis CI untuk menginstal .NET SDK menggunakan csharp bahasa dan dotnet kunci. Untuk informasi selengkapnya, lihat dokumen Ci Travis resmi tentang Membangun Proyek C#, F#, atau Visual Basic. Perhatikan saat Anda mengakses informasi Travis CI bahwa pengidentifikasi bahasa yang dikelola language: csharp komunitas berfungsi untuk semua bahasa .NET, termasuk F#, dan Mono.

Travis CI menjalankan pekerjaan macOS dan Linux dalam matriks build, di mana Anda menentukan kombinasi runtime, lingkungan, dan pengecualian/inklusi untuk mencakup kombinasi build untuk aplikasi Anda. Untuk informasi selengkapnya, lihat artikel Menyesuaikan Build di dokumentasi Travis CI. Alat berbasis MSBuild mencakup runtime dukungan jangka panjang (LTS) dan dukungan jangka standar (STS) dalam paket; jadi dengan menginstal SDK, Anda menerima semua yang anda butuhkan untuk membangun.

AppVeyor

AppVeyor menginstal .NET 6 SDK dengan Visual Studio 2022 gambar pekerja build. Gambar build lainnya dengan versi .NET SDK yang berbeda tersedia. Untuk informasi selengkapnya, lihat artikel Gambar pekerja build di dokumen AppVeyor.

Biner .NET SDK diunduh dan di-unzip dalam subdirektori menggunakan skrip penginstalan, lalu ditambahkan ke PATH variabel lingkungan. Tambahkan matriks build untuk menjalankan pengujian integrasi dengan beberapa versi .NET SDK:

environment:
  matrix:
    - CLI_VERSION: 6.0.7
    - CLI_VERSION: Latest

Azure DevOps Services

Konfigurasikan Azure DevOps Services untuk membangun proyek .NET menggunakan salah satu pendekatan berikut:

  • Jalankan skrip dari langkah penyiapan manual menggunakan perintah Anda.
  • Buat build yang terdiri dari beberapa tugas build bawaan Azure DevOps Services yang dikonfigurasi untuk menggunakan alat .NET.

Kedua solusi tersebut valid. Dengan menggunakan skrip penyiapan manual, Anda mengontrol versi alat yang Anda terima, karena Anda mengunduhnya sebagai bagian dari build. Build dijalankan dari skrip yang harus Anda buat. Artikel ini hanya membahas opsi manual. Untuk informasi selengkapnya tentang membuat build dengan tugas build Azure DevOps Services, lihat dokumentasi Azure Pipelines .

Untuk menggunakan skrip penyiapan manual di Azure DevOps Services, buat definisi build baru dan tentukan skrip yang akan dijalankan untuk langkah build. Ini dicapai menggunakan antarmuka pengguna Azure DevOps Services:

  1. Mulailah dengan membuat definisi build baru. Setelah Anda mencapai layar yang memberi Anda opsi untuk menentukan jenis build apa yang ingin Anda buat, pilih opsi Kosong .

    Selecting an empty build definition

  2. Setelah mengonfigurasi repositori untuk dibuat, Anda diarahkan ke definisi build. Pilih Tambahkan langkah build:

    Adding a build step

  3. Anda disajikan dengan katalog Tugas. Katalog berisi tugas yang Anda gunakan dalam build. Karena Anda memiliki skrip, pilih tombol Tambahkan untuk PowerShell: Jalankan skrip PowerShell.

    Adding a PowerShell script step

  4. Konfigurasikan langkah build. Tambahkan skrip dari repositori yang Sedang Anda bangun:

    Specifying the PowerShell script to run

Mengatur build

Sebagian besar dokumen ini menjelaskan cara memperoleh alat .NET dan mengonfigurasi berbagai layanan CI tanpa memberikan informasi tentang cara mengatur, atau benar-benar membangun, kode Anda dengan .NET. Pilihan tentang cara menyusun proses build tergantung pada banyak faktor yang tidak dapat dibahas secara umum di sini. Untuk informasi selengkapnya tentang mengatur build Anda dengan setiap teknologi, jelajahi sumber daya dan sampel yang disediakan dalam kumpulan dokumentasi Travis CI, AppVeyor, dan Azure Pipelines.

Dua pendekatan umum yang Anda ambil dalam menyusun proses build untuk kode .NET menggunakan alat .NET menggunakan MSBuild secara langsung atau menggunakan perintah baris perintah .NET. Pendekatan mana yang harus Anda ambil ditentukan oleh tingkat kenyamanan Anda dengan pendekatan dan trade-off dalam kompleksitas. MSBuild memberi Anda kemampuan untuk mengekspresikan proses build Anda sebagai tugas dan target, tetapi dilengkapi dengan kompleksitas tambahan untuk mempelajari sintaks file proyek MSBuild. Menggunakan alat baris perintah .NET mungkin lebih sederhana, tetapi mengharuskan Anda menulis logika orkestrasi dalam bahasa skrip seperti bash atau PowerShell.

Tip

Satu properti MSBuild yang ingin Anda atur true adalah ContinuousIntegrationBuild. Properti ini memungkinkan pengaturan yang hanya berlaku untuk build resmi dibandingkan dengan build pengembangan lokal.

Lihat juga