Latihan - Membuat agen build yang berjalan di Azure
Di unit ini, untuk mengonfigurasi agen build yang dapat Anda gunakan di Microsoft Azure Pipelines, Anda akan menggunakan komputer virtual yang berjalan di Microsoft Azure. Kami menyediakan mesin virtual yang dapat Anda gunakan selama durasi modul ini.
Dalam unit ini, Anda akan:
- Buat mesin virtual Ubuntu di Azure untuk digunakan sebagai agen build Anda.
- Buat kumpulan agen di Microsoft Azure DevOps.
- Buat token akses untuk mengautentikasi agen Anda dengan Azure DevOps.
- Konfigurasikan agen Anda dengan perangkat lunak yang diperlukan untuk membangun situs web Space Game.
- Konfigurasikan agen Anda untuk tersambung ke Azure DevOps sehingga dapat menerima pekerjaan build.
- Verifikasi bahwa agen tersambung ke Azure DevOps dan siap menerima pekerjaan build.
Ada banyak cara untuk membuat mesin virtual (VM) di Azure. Di unit ini, Anda akan membuat komputer virtual Ubuntu dengan menggunakan terminal interaktif yang disebut Cloud Shell.
Untuk mengonfigurasi mesin virtual, Anda memiliki beberapa pilihan:
- Untuk mesin virtual Linux, Anda dapat tersambung langsung melalui SSH dan mengonfigurasi sistem Anda secara interaktif.
- Anda dapat mengotomatiskan penyebaran menggunakan template ARM, Bicep, atau alat provisi otomatis lainnya.
- Jika perlu menyebarkan banyak agen build, Anda dapat membuat citra mesin virtual yang memiliki semua perangkat lunak yang telah diinstal sebelumnya.
Mengonfigurasi sistem secara interaktif adalah cara yang baik untuk memulai, karena membantu Anda memahami proses dan apa yang diperlukan. Untuk menyederhanakan proses, sambungkan ke mesin virtual Ubuntu Anda melalui SSH dan jalankan skrip shell untuk menyiapkan agen build Anda.
Catatan
Jika Anda tidak terbiasa dengan menyambungkan atau mengonfigurasi sistem Linux, cukup ikuti saja. Anda dapat menerapkan konsep yang sama ke agen build Windows.
Membuat komputer virtual Linux
Di bagian ini, Anda membuat mesin virtual yang menjalankan Ubuntu 20.04, yang akan berfungsi sebagai agen build Anda. Mesin virtual belum disiapkan untuk menjadi agen build atau memiliki salah satu alat yang diperlukan untuk membangun aplikasi web Space Game. Anda akan segera menyiapkannya.
Munculkan Cloud Shell melalui portal Azure
Penting
Untuk menyelesaikan latihan dalam modul ini, Anda memerlukan langganan Azure Anda sendiri.
Buka portal Microsoft Azure dan masuk.
Dari menu, pilih Cloud Shell. Jika diminta, pilih pengalaman Bash.
Catatan
Cloud Shell memerlukan sumber daya penyimpanan Azure untuk menyimpan file apa pun yang Anda buat di Cloud Shell. Saat pertama kali membuka Cloud Shell, Anda akan diminta untuk membuat grup sumber daya, akun penyimpanan, dan berbagi Azure Files. Penyiapan ini secara otomatis digunakan untuk semua sesi Cloud Shell di masa mendatang.
Pilih wilayah Azure
Wilayah adalah satu pusat data Azure atau lebih dalam lokasi geografis. US Timur, US Barat, dan Eropa Utara adalah contoh wilayah. Setiap sumber daya Azure, termasuk Azure VM, diberi wilayah.
Untuk membuat perintah lebih mudah dijalankan, mulailah dengan memilih wilayah default. Setelah Anda menentukan wilayah default, perintah selanjutnya menggunakan wilayah tersebut kecuali Anda menentukan wilayah yang berbeda.
Dari Cloud Shell, untuk mencantumkan wilayah yang tersedia dari langganan Azure Anda, jalankan perintah berikut
az account list-locations
:az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output table
Dari kolom
Name
dalam output, pilih wilayah yang dekat dengan Anda. Misalnya, piliheastasia
atauwestus2
.Jalankan
az configure
untuk mengatur wilayah default Anda. Ganti<REGION>
dengan nama wilayah yang Anda pilih:az configure --defaults location=<REGION>
Contoh ini menetapkan
westus2
sebagai wilayah default:az configure --defaults location=westus2
Buat grup sumber daya
Buat grup sumber daya untuk berisi sumber daya yang digunakan dalam modul pelatihan ini.
Untuk membuat grup sumber daya yang bernama tailspin-space-game-rg, jalankan perintah berikut
az group create
:az group create --name tailspin-space-game-rg
Buat VM
Untuk membuat VM Anda, jalankan perintah berikut az vm create
:
az vm create \
--name MyLinuxAgent \
--resource-group tailspin-space-game-rg \
--image canonical:0001-com-ubuntu-server-focal:20_04-lts:latest \
--size Standard_DS2_v2 \
--admin-username azureuser \
--generate-ssh-keys
Mesin virtual Anda akan memakan waktu beberapa saat untuk muncul.
Standard_DS2_v2 menentukan ukuran mesin virtual. Ukuran mesin virtual menentukan kecepatan prosesor, jumlah memori, jumlah penyimpanan awal, dan bandwidth jaringan yang diharapkan. Ini adalah ukuran yang sama yang disediakan oleh agen yang dihosting Microsoft. Dalam praktiknya, Anda dapat memilih ukuran yang menyediakan lebih banyak daya komputasi atau kemampuan tambahan, seperti pemrosesan grafis.
Argumen --resource-group
menentukan grup sumber daya yang menyimpan semua hal yang perlu kita buat. Grup sumber daya memungkinkan Anda mengelola semua mesin virtual, disk, antarmuka jaringan, dan elemen lain yang membentuk solusi kami sebagai satu unit.
Membuat kumpulan agen
Ingat bahwa kumpulan agen mengelola agen build. Di bagian ini, Anda akan membuat kumpulan agen di Azure DevOps. Nantinya, Anda akan menentukan nama kumpulan agen saat mengonfigurasi agen sehingga dapat mendaftarkan dirinya sendiri ke kumpulan yang benar.
Di Azure DevOps, buka proyek Space Game - web - Agent.
Pilih Pengaturan proyek.
Di Alur, pilih Kumpulan agen.
Select Add kumpulan.
Di jendela Tambahkan kumpulan:
- Di Kumpulan untuk ditautkan, pilih Baru.
- Di Jenis kumpulan, pilih Dihost sendiri.
- Di Nama, masukkan MyAgentPool.
Dalam praktiknya, Anda akan memilih nama yang lebih deskriptif untuk kumpulan Anda.
Pilih Buat. Kumpulan agen baru muncul dalam daftar.
Membuat token akses pribadi
Agar agen build Anda mendaftarkan dirinya dengan Azure DevOps, Anda memerlukan cara bagi agen tersebut untuk mengautentikasi dirinya sendiri.
Untuk melakukannya, Anda dapat membuat token akses pribadi. Token akses pribadi—atau PAT—adalah alternatif untuk kata sandi. Anda dapat menggunakan PAT untuk mengautentikasi dengan layanan seperti Azure DevOps.
Penting
Seperti yang Anda lakukan dengan kata sandi, pastikan untuk menyimpan token akses Anda di tempat aman. Di bagian ini, Anda akan menyimpan token akses sebagai variabel lingkungan sehingga tidak muncul di skrip shell Anda.
Di Azure DevOps, buka pengaturan profil Anda, lalu pilih Token akses pribadi.
Pilih Token Baru.
Masukkan nama untuk token Anda, seperti Agen build.
Di bawah Cakupan, pilih tautan Perlihatkan semua cakupan di bagian bawah.
Cari Kumpulan Agen, lalu pilih Baca &kelola.
Pilih Buat.
Salin token ke tempat yang aman.
Kemudian, Anda akan menggunakan token untuk memungkinkan agen build mengautentikasi akses ke Azure Pipelines.
Sambungkan ke VM Anda
Di bagian ini, Anda akan terhubung ke VM Linux melalui SSH sehingga Anda dapat mengonfigurasinya.
Ingat bahwa Anda tidak dapat masuk secara interaktif ke agen yang dihosting Microsoft. Karena agen build privat adalah milik Anda sendiri, Anda dapat masuk dan mengonfigurasinya sesuka Anda.
Kemampuan untuk terhubung ke agen build memungkinkan Anda mengonfigurasinya dengan alat yang Anda butuhkan untuk membangun perangkat lunak Anda. Ini juga memungkinkan Anda untuk memecahkan masalah saat Anda membangun konfigurasi alur Anda.
Untuk mendapatkan alamat IP VM Anda, jalankan
az vm show
di Cloud Shell:IPADDRESS=$(az vm show \ --name MyLinuxAgent \ --resource-group tailspin-space-game-rg \ --show-details \ --query [publicIps] \ --output tsv)
Perintah ini menyimpan alamat IP dalam variabel Bash bernama
IPADDRESS
.Cetak alamat IP VM ke konsol:
echo $IPADDRESS
Buat koneksi SSH ke VM Anda. Sebagai ganti $IPADDRESS, masukkan alamat IP yang Anda terima di langkah sebelumnya . Pada perintah, masukkan ya untuk melanjutkan penyambungan.
ssh azureuser@$IPADDRESS
Anda sekarang terhubung ke mesin virtual Anda melalui SSH.
Perintah ini berfungsi karena Anda memberikan opsi
--generate-ssh-keys
saat menjalankanaz vm create
sebelumnya. Opsi ini membuat pasangan kunci SSH, yang memungkinkan Anda masuk ke mesin virtual.
Menginstal alat build di mesin virtual Anda
Di bagian ini, Anda akan mengonfigurasi VM dengan alat yang diperlukan untuk membangun situs web Space Game .
Ingat bahwa proses build Anda yang sudah ada menggunakan alat berikut:
- SDK .NET, yang digunakan untuk membangun aplikasi
- Node.js, yang digunakan untuk menjalankan tugas build
- npm, pengelola paket untuk Node.js
- gulp, paket Node.js yang digunakan untuk mengecilkan file JavaScript dan CSS
Ini adalah alat utama yang diperlukan proses build. Untuk menginstalnya, Anda akan mengunduh dan menjalankan skrip shell dari GitHub.
Catatan
Proses build menggunakan alat lain, seperti node-sass, untuk mengonversi file Sass (.scss) ke file CSS (.css). Namun, Node.js menginstal alat-alat ini saat build berjalan.
Mari kita mulai dengan memperbarui pengelola paket Ubuntu, bernama apt. Tindakan ini mengambil informasi terbaru dari repositori paket dan biasanya merupakan hal pertama yang Anda lakukan saat menyiapkan sistem Ubuntu baru.
Di koneksi SSH Anda, perbarui cache manajer paket apt:
sudo apt-get update
sudo
menjalankan perintah dengan administrator, atau root, hak istimewa.Untuk mengunduh skrip shell bernama build-tools.sh dari GitHub, jalankan perintah
curl
berikut:curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-tools.sh > build-tools.sh
Cetak skrip ke terminal sehingga Anda dapat memeriksa isinya:
cat build-tools.sh
Hasil berikut akan ditampilkan:
#!/bin/bash set -e # Select a default .NET version if one is not specified if [ -z "$DOTNET_VERSION" ]; then DOTNET_VERSION=6.0.300 fi # Add the Node.js PPA so that we can install the latest version curl -sL https://deb.nodesource.com/setup_16.x | bash - # Install Node.js and jq apt-get install -y nodejs apt-get install -y jq # Install gulp npm install -g gulp # Change ownership of the .npm directory to the sudo (non-root) user chown -R $SUDO_USER ~/.npm # Install .NET as the sudo (non-root) user sudo -i -u $SUDO_USER bash << EOF curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin -c LTS -v $DOTNET_VERSION EOF
Skrip menginstal Node.js, npm, gulp, dan Core .NET.
Dengan mengatur variabel lingkungan
DOTNET_VERSION
, Anda dapat menentukan versi .NET yang akan diinstal. Jika Anda tidak mengatur variabel ini, skrip akan menginstal versi yang digunakan konfigurasi build yang ada. Untuk tujuan pembelajaran, Anda tidak mengatur variabel ini. Anda mengizinkan skrip untuk menggunakan versi default.Buat skrip dapat dieksekusi, lalu jalankan skrip:
chmod u+x build-tools.sh sudo ./build-tools.sh
Skrip ini membutuhkan waktu beberapa menit untuk dijalankan.
Dalam praktiknya, Anda sekarang dapat menjalankan perintah untuk memverifikasi bahwa setiap komponen perangkat lunak berhasil diinstal.
Menginstal perangkat lunak di mesin virtual Anda
Sekarang saatnya untuk menginstal perangkat lunak agen di mesin virtual Anda. Perangkat lunak ini memungkinkan mesin virtual untuk bertindak sebagai agen build dan menerima pekerjaan build dari Azure Pipelines.
Proses pendaftaran memeriksa perangkat lunak yang diinstal sebelum mendaftarkan agen dengan Azure Pipelines. Oleh karena itu, penting untuk menyiapkan agen setelah Anda menginstal semua perangkat lunak lain. Dalam praktiknya, Anda dapat mendaftarkan agen dua kali jika perlu menginstal perangkat lunak tambahan.
Dokumentasi ini menjelaskan cara menyiapkan agen Linux yang dihost sendiri secara manual serta agen macOS dan Windows. Anda menjalankan skrip shell untuk mengonfigurasi agen Anda dengan cara yang sama seperti Anda menyiapkan alat build di bagian sebelumnya.
Penting
Skrip yang Anda jalankan di sini untuk tujuan pembelajaran. Dalam praktiknya, Anda harus terlebih dahulu memahami bagaimana setiap perintah dalam skrip yang Anda bangun memengaruhi sistem secara keseluruhan. Di akhir modul, kita akan menampilkan dokumentasi yang lebih sepenuhnya menjelaskan opsi Anda.
Untuk mengunduh skrip shell bernama build-agent.sh dari GitHub, jalankan perintah
curl
berikut:curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-agent.sh > build-agent.sh
Cetak skrip ke terminal sehingga Anda dapat memeriksa isinya:
cat build-agent.sh
Hasil berikut akan ditampilkan:
#!/bin/bash set -e # Select a default agent version if one is not specified if [ -z "$AZP_AGENT_VERSION" ]; then AZP_AGENT_VERSION=2.187.2 fi # Verify Azure Pipelines token is set if [ -z "$AZP_TOKEN" ]; then echo 1>&2 "error: missing AZP_TOKEN environment variable" exit 1 fi # Verify Azure DevOps URL is set if [ -z "$AZP_URL" ]; then echo 1>&2 "error: missing AZP_URL environment variable" exit 1 fi # If a working directory was specified, create that directory if [ -n "$AZP_WORK" ]; then mkdir -p "$AZP_WORK" fi # Create the Downloads directory under the user's home directory if [ -n "$HOME/Downloads" ]; then mkdir -p "$HOME/Downloads" fi # Download the agent package curl https://vstsagentpackage.azureedge.net/agent/$AZP_AGENT_VERSION/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz > $HOME/Downloads/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz # Create the working directory for the agent service to run jobs under if [ -n "$AZP_WORK" ]; then mkdir -p "$AZP_WORK" fi # Create a working directory to extract the agent package to mkdir -p $HOME/azp/agent # Move to the working directory cd $HOME/azp/agent # Extract the agent package to the working directory tar zxvf $HOME/Downloads/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz # Install the agent software ./bin/installdependencies.sh # Configure the agent as the sudo (non-root) user chown $SUDO_USER $HOME/azp/agent sudo -u $SUDO_USER ./config.sh --unattended \ --agent "${AZP_AGENT_NAME:-$(hostname)}" \ --url "$AZP_URL" \ --auth PAT \ --token "$AZP_TOKEN" \ --pool "${AZP_POOL:-Default}" \ --work "${AZP_WORK:-_work}" \ --replace \ --acceptTeeEula # Install and start the agent service ./svc.sh install ./svc.sh start
Anda tidak perlu memahami cara kerja setiap baris, tetapi berikut adalah ringkasan singkat tentang apa yang dilakukan skrip ini:
- Skrip ini mengunduh paket agen sebagai file .tar.gz dan mengekstrak kontennya.
- Dalam file yang diekstrak, skrip:
- Menjalankan skrip shell bernama installdependencies.sh untuk menginstal perangkat lunak agen.
- Menjalankan skrip shell bernama config.sh untuk mengonfigurasi agen dan mendaftarkan agen dengan Azure Pipelines.
- Menjalankan skrip shell bernama svc.sh untuk menginstal dan memulai layanan agen.
Skrip ini menggunakan variabel lingkungan untuk memungkinkan Anda memberikan detail tentang organisasi Azure DevOps Anda. Berikut ringkasannya:
Variabel Bash Deskripsi Default AZP_AGENT_VERSION
Versi perangkat lunak agen yang akan diinstal Versi yang terakhir kami gunakan untuk menguji modul ini AZP_URL
URL organisasi Azure DevOps Anda (Tidak Ada) AZP_TOKEN
Token akses pribadi Anda (Tidak Ada) AZP_AGENT_NAME
Nama agen Anda seperti yang muncul di Azure DevOps Nama host sistem AZP_POOL
Nama kumpulan agen Anda Default AZP_WORK
Direktori kerja bagi agen untuk menjalankan tugas build _work Jika skrip tidak memberikan nilai default untuk variabel yang tidak diatur, skrip mencetak pesan kesalahan dan akan segera keluar.
Dalam langkah-langkah berikut, atur variabel lingkungan ini:
AZP_AGENT_VERSION
AZP_URL
AZP_TOKEN
AZP_AGENT_NAME
AZP_POOL
Untuk saat ini, kami sarankan Anda membiarkan variabel lain tidak diatur.
Atur variabel lingkungan
AZP_AGENT_NAME
untuk menentukan nama agen Anda. Kami merekomendasikan MyLinuxAgent.export AZP_AGENT_NAME=MyLinuxAgent
Atur variabel lingkungan
AZP_URL
untuk menentukan URL ke organisasi Azure DevOps Anda.Ganti <organisasi> dengan organisasi Anda. Anda bisa mendapatkan nama dari tab browser yang menampilkan Azure DevOps.
export AZP_URL=https://dev.azure.com/organization
Atur
AZP_TOKEN
variabel lingkungan untuk menentukan token akses pribadi Anda (nilai token panjang yang Anda salin sebelumnya di unit ini).Ganti <token> dengan token Anda.
export AZP_TOKEN=token
Atur variabel lingkungan
AZP_POOL
untuk menentukan nama kumpulan agen Anda. Sebelumnya, Anda membuat kumpulan bernama MyAgentPool.export AZP_POOL=MyAgentPool
Atur variabel lingkungan
AZP_AGENT_VERSION
untuk menentukan versi terbaru agen.export AZP_AGENT_VERSION=$(curl -s https://api.github.com/repos/microsoft/azure-pipelines-agent/releases | jq -r '.[0].tag_name' | cut -d "v" -f 2)
Alur YAML pada komputer Linux harus menggunakan versi terbaru agen, bahkan jika masih pra-rilis. Perangkat lunak agen terus diperbarui, sehingga Anda
curl
informasi versi dari repositori GitHub. Perintah ini menggunakanjq
untuk membaca versi terbaru dari string JSON yang ditampilkan.Cetak versi agen ke konsol. Secara opsional, periksa untuk memastikan ini adalah versi terbaru.
echo $AZP_AGENT_VERSION
Buat skrip dapat dieksekusi, lalu jalankan:
chmod u+x build-agent.sh sudo -E ./build-agent.sh
sudo
memungkinkan skrip berjalan sebagai pengguna root. Argumen-E
mempertahankan variabel lingkungan saat ini, termasuk variabel yang Anda tetapkan, sehingga tersedia untuk skrip.Saat skrip berjalan, Anda dapat melihat agen tersambung ke Azure DevOps, melihatnya ditambahkan ke kumpulan agen, dan melihat koneksi agen diuji.
Memverifikasi bahwa layanan agen berjalan
Anda telah berhasil menginstal alat build dan perangkat lunak agen di mesin virtual Anda. Sebagai langkah verifikasi, buka Azure DevOps dan lihat agen Anda di kumpulan agen.
Di Azure DevOps, buka proyek Space Game - web - Agent.
Pilih Pengaturan proyek.
Di Alur, pilih Kumpulan agen.
Pilih MyAgentPool.
Pilih tab Agen.
Anda dapat melihat bahwa agen Anda online dan siap untuk menerima pekerjaan build.
Tip
Jika agen build Anda ditampilkan sebagai Offline, coba tunggu beberapa saat lalu refresh halaman.
Pilih agen Anda, MyLinuxAgent.
Pilih tab Kemampuan.
Selama penyiapan, proses konfigurasi memindai agen build Anda untuk kemampuan alat. Anda melihat bahwa
npm
terdaftar sebagai salah satunya. Ingat bahwa konfigurasi build asli Anda menentukan jikanpm
harus diinstal di agen.Saat menentukan kumpulan agen mana yang akan digunakan, Anda dapat menyertakan salah satu entri ini di bagian
demands
Anda. Menyertakannya memastikan bahwa Azure Pipelines memilih agen build yang memiliki perangkat lunak yang Anda butuhkan untuk membangun aplikasi Anda. Ini juga memungkinkan Anda untuk membuat kumpulan agen dengan berbagai konfigurasi perangkat lunak. Azure Pipelines akan memilih konfigurasi yang benar berdasarkan kebutuhan Anda.