Merencanakan tugas build Anda
Mara sekarang memiliki salinan kode Space Game . Dia akan membuatnya menggunakan Microsoft Azure Pipelines alih-alih server build Ubuntu 22.04 yang ada. Sebelum dapat melakukan itu, dia harus memikirkan skrip build yang ada. Ikuti saat dia memetakan skrip yang ada ke tugas Azure Pipelines. Pikirkan tentang bagaimana Anda dapat melakukan hal yang sama dengan proses build Anda sendiri.
Berikut beberapa catatan yang dikumpulkan Mara saat dia berbicara dengan Anda, pemimpin pengembang:
- Mesin build menjalankan Ubuntu 22.04.
- Mesin build mencakup alat build seperti:
- npm, pengelola paket untuk Node.js
- NuGet, pengelola paket untuk .NET
- .NET SDK
- Proyek ini menggunakan Syntactically Awesome Style Sheets (Sass) untuk mempermudah pembuatan file cascading style sheets (CSS).
- Proyek ini menggunakan toolkit gulp untuk mengecilkan file JavaScript dan CSS.
Aset yang diperkecil mengecualikan data yang tidak diperlukan (seperti whitespace) dan mempersingkat nama variabel untuk membantunya mengunduh lebih cepat.
Berikut langkah-langkah yang terjadi selama proses build:
- Untuk menginstal paket Node.js yang ditetapkan di
package.json
, jalankannpm install
. - Untuk mengonversi file Sass (.scss) menjadi file CSS (.css), jalankan
node-sass
. - Untuk mengecilkan file JavaScript dan CSS, jalankan
gulp
. - Untuk membantu tim QA mengidentifikasi nomor dan tanggal pembuatan, cetak informasi pembuatan ke direktori
wwwroot
. - Untuk menginstal dependensi proyek, jalankan
dotnet restore
. - Untuk membangun aplikasi di bagian konfigurasi Debug dan Rilis, jalankan
dotnet build
. - Untuk mengemas aplikasi sebagai file .zip dan menyalin hasilnya ke berbagi jaringan agar diambil tim QA, jalankan
dotnet publish
.
Mara membuat skrip shell yang melakukan tugas yang dia identifikasi. Dia menjalankannya di laptop.
Catatan
Anda tidak perlu menjalankan skrip ini atau memahami fungsinya secara utuh. Di sini, hal ini mengilustrasikan apa yang mungkin dilakukan skrip build.
#!/bin/bash
# Install Node.js modules as defined in package.json.
npm install --quiet
# Compile Sass (.scss) files to standard CSS (.css).
node-sass Tailspin.SpaceGame.Web/wwwroot
# Minify JavaScript and CSS files.
gulp
# Print the date to wwwroot/buildinfo.txt.
echo `date` > Tailspin.SpaceGame.Web/wwwroot/buildinfo.txt
# Install the latest .NET packages the app depends on.
dotnet restore
# Build the app under the Debug configuration.
dotnet build --configuration Debug
# Publish the build to the /tmp directory.
dotnet publish --no-build --configuration Debug --output /tmp/Debug
# Build the app under the Release configuration.
dotnet build --configuration Release
# Publish the build to the /tmp directory.
dotnet publish --no-build --configuration Release --output /tmp/Release
Direktori /tmp
meniru berbagi jaringan tim.
Setelah menjalankan skrip, Mara menyadari bahwa skripnya tidak lengkap. Misalnya, tidak menangani kesalahan. Tidak memberi tahu siapa pun jika kesalahan build terjadi. Bahkan ketika terjadi kesalahan, skrip tersebut tetap berjalan. Selain itu skripnya tidak menginstal alat yang diperlukan untuk setiap langkah.
Apa saja tugas Azure Pipelines?
Di Azure Pipelines, tugas adalah skrip atau prosedur paket yang telah diabstraksi dengan serangkaian input.
Tugas Azure Pipelines mengabstraksi detail yang mendasarinya. Abstraksi ini mempermudah untuk menjalankan fungsi build umum, seperti mengunduh alat build atau paket tempat aplikasi Anda bergantung, atau untuk membuat proyek Anda, yang menjalankan Visual Studio atau Xcode.
Untuk membangun proyek C# yang menargetkan .NET, berikut adalah contoh yang menggunakan tugas DotNetCoreCLI@2
:
task: DotNetCoreCLI@2
displayName: 'Build the project'
inputs:
command: 'build'
arguments: '--no-restore --configuration Release'
projects: '**/*.csproj'
Alur mungkin menerjemahkan tugas tersebut ke perintah ini:
dotnet build MyProject.csproj --no-restore --configuration Release
Mari kita uraikan tugas ini sedikit lebih terperinci:
- Tugas
DotNetCoreCLI@2
memetakan ke perintahdotnet
. displayName
menentukan nama tugas yang ditampilkan di antarmuka pengguna. Anda akan segera melihat ini berjalan.inputs
menentukan argumen yang diteruskan ke perintah.command
menentukan untuk menjalankan subperintahdotnet build
.arguments
menentukan argumen tambahan untuk diteruskan ke perintah.projects
menentukan proyek mana yang akan dibuat. Contoh ini menggunakan pola wildcard**/*.csproj
. Baik**
maupun*.csproj
adalah contoh dari apa yang disebut pola glob. Bagian**
menentukan untuk mencari direktori saat ini dan semua direktori turunan. Bagian*.csproj
menentukan file .csproj apa pun. Wildcard memungkinkan Anda mengerjakan banyak file tanpa menentukan tiap-tiap file. Jika Anda perlu mengerjakan file tertentu saja, Anda dapat menentukan file tersebut daripada menggunakan wildcard.
"@" dalam nama tugas—misalnya, DotNetCoreCLI@2
—mengacu pada versi tugas. Saat versi tugas baru tersedia, Anda dapat bermigrasi secara bertahap ke versi terbaru untuk memanfaatkan fitur-fitur baru.
Bagaimana tugas digunakan dalam alur?
Berikutnya, Mara akan memetakan perintah skrip yang ada ke tugas Azure Pipelines. Alur dibuat menggunakan file YAML, yang merupakan format ringkas yang memudahkan untuk menyusun jenis data yang ada dalam file konfigurasi. File YAML alur biasanya dikelola langsung dengan kode sumber aplikasi Anda.
Mara menggunakan YAML sebelumnya untuk menentukan tugas dan konfigurasi build serupa. Dia juga menyukai gagasan untuk mempertahankan definisi build sebagai kode, sama seperti bagian lain dari proyeknya.
Untuk menentukan build-nya, Mara memilih menggunakan Visual Studio Code untuk membuat file YAML. Di dalamnya, dia memasukkan semua tugas Azure Pipelines yang akan digunakan untuk mengganti perintah skrip yang ada.
Memetakan perintah skrip ke tugas Azure Pipelines
Sekarang, Anda akan mengikuti saat Mara memetakan perintah dari skripnya ke tugas Azure Pipelines.
Untuk memetakan setiap perintah, Mara merujuk pada dokumentasi referensi. Dokumentasi ini mengategorikan tugas menurut fungsi, seperti build atau penyebaran.
Misalnya, tugas DotNetCoreCLI@2
.NET Core CLI membantu Anda menjalankan dotnet
perintah.
Tabel ini mengaitkan perintah skrip dengan tugas Azure Pipelines baru:
Perintah skrip | Tugas Azure Pipelines |
---|---|
npm install |
Npm@1 |
node-sass |
CmdLine@2 (atau script ) |
gulp |
gulp@1 |
echo `date` |
CmdLine@2 (atau script ) |
dotnet restore |
DotNetCoreCLI@2 |
dotnet build |
DotNetCoreCLI@2 |
dotnet publish |
DotNetCoreCLI@2 |
Tidak ada tipe tugas bawaan node-sass
yang menjalankan atau mencetak tanggal ke file. Untuk itu, Mara menggunakan tugas CmdLine@2
, yang memungkinkannya menjalankan perintah yang dia inginkan. Lebih umum, Anda akan melihat tugas script
, yang merupakan pintasan untuk CmdLine@2
. Untuk informasi selengkapnya tentang pintasan tugas umum lainnya, lihat Referensi skema YAML untuk Azure Pipelines - langkah-langkah.
Anda akan segera membuat file YAML milik Anda sendiri yang menggunakan tugas ini.