Merencanakan tugas build Anda

Selesai

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:

  1. Untuk menginstal paket Node.js yang ditetapkan di package.json, jalankan npm install.
  2. Untuk mengonversi file Sass (.scss) menjadi file CSS (.css), jalankan node-sass.
  3. Untuk mengecilkan file JavaScript dan CSS, jalankan gulp.
  4. Untuk membantu tim QA mengidentifikasi nomor dan tanggal pembuatan, cetak informasi pembuatan ke direktori wwwroot.
  5. Untuk menginstal dependensi proyek, jalankan dotnet restore.
  6. Untuk membangun aplikasi di bagian konfigurasi Debug dan Rilis, jalankan dotnet build.
  7. 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 perintah dotnet.
  • 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 subperintah dotnet 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.

Uji pengetahuan Anda

1.

Tugas build: