Latihan - Siapkan lingkungan Anda

Selesai

Penting

Anda memerlukan langganan Azure Anda sendiri untuk menjalankan latihan ini, dan Anda mungkin dikenakan biaya. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Sebelum Anda mulai mengerjakan alur kerja situs web perusahaan mainan, Anda perlu mengonfigurasi lingkungan Anda. Di pelajaran ini, Anda memastikan bahwa lingkungan Azure dan GitHub disiapkan untuk menyelesaikan sisa modul ini.

Untuk memenuhi tujuan ini, Anda akan:

  • Siapkan repositori GitHub untuk modul ini.
  • Kloning repositori proyek ke komputer Anda.
  • Buat dua identitas beban kerja di ID Microsoft Entra.
  • Buat dua grup sumber daya di Azure.
  • Buat rahasia dan lingkungan di GitHub.

Mendapatkan repositori GitHub

Di sini, Anda memastikan bahwa repositori GitHub disiapkan untuk menyelesaikan sisa modul ini. Anda menyiapkannya dengan membuat repositori baru berdasarkan repositori templat. Repositori templat berisi file yang Anda butuhkan untuk memulai modul ini.

Modul-modul dalam jalur pembelajaran ini merupakan bagian dari sebuah progresi. Untuk tujuan pembelajaran, setiap modul memiliki repositori templat GitHub terkait.

Tip

Meskipun Anda telah menyelesaikan modul sebelumnya di jalur pembelajaran, harap ikuti petunjuk ini untuk membuat repositori baru dan pastikan Anda memberinya nama baru.

Mulai dari repositori templat

Jalankan templat yang menyiapkan repositori GitHub Anda.

Di situs GitHub, ikuti langkah-langkah ini untuk membuat repositori dari templat:

  1. Pilih Gunakan templat>ini Buat repositori baru.

    Screenshot of the GitHub interface showing the template repo, with the 'Use this template' button highlighted.

  2. Pilih nama pengguna GitHub Anda dari daftar drop-down Pemilik .

  3. Masukkan nama repositori untuk proyek baru Anda, seperti toy-website-end-to-end.

  4. Pilih opsi Publik.

    Saat membuat repositori Anda sendiri, Anda mungkin ingin menjadikannya privat. Dalam modul ini, Anda akan bekerja dengan beberapa fitur GitHub yang hanya berfungsi dengan repositori publik dan dengan akun GitHub Enterprise.

  5. Pilih Buat repositori dari templat.

    Screenshot of the GitHub interface showing the repo creation page.

Penting

Latihan terakhir dalam modul ini berisi langkah-langkah pembersihan yang penting. Pastikan untuk mengikuti langkah-langkah pembersihan meskipun Anda tidak menyelesaikan modul ini.

Mengklon repositori

Anda sekarang memiliki salinan repositori templat di akun Anda sendiri. Sekarang, Anda akan mengklon repositori ini secara lokal sehingga dapat mulai bekerja di dalamnya.

  1. Pilih Kode dan pilih ikon salin.

    Screenshot of the GitHub interface showing the new repository, with the repository U R L copy button highlighted.

  2. Buka Visual Studio Code.

  3. Buka jendela terminal Visual Studio Code dengan memilih Terminal>Terminal Baru. Jendela ini biasanya terbuka di bagian bawah layar.

  4. Arahkan di terminal ke direktori tempat Anda ingin mengkloning repositori GitHub di komputer lokal Anda. Misalnya, untuk mengkloning repositori ke folder toy-website-environments, jalankan perintah berikut:

    cd toy-website-end-to-end
    
  5. Ketik git clone lalu tempel URL yang Anda salin sebelumnya, yang terlihat seperti ini:

    git clone https://github.com/mygithubuser/toy-website-end-to-end.git
    
  6. Buka kembali Visual Studio Code di folder repositori dengan menjalankan perintah berikut di terminal Visual Studio Code:

    code -r toy-website-end-to-end
    

Masuk ke Azure

Untuk bekerja dengan grup sumber daya di Azure, masuk ke akun Azure Anda dari terminal Visual Studio Code. Pastikan Anda telah menginstal alat Azure CLI.

  1. Pada menu Terminal, pilih Terminal Baru. Jendela terminal biasanya terbuka di bagian bawah layar Anda.

  2. Shell default biasanya pwsh, seperti yang ditunjukkan di sisi kanan jendela terminal.

    Screenshot of the Visual Studio Code terminal window, with p w s h shown as the shell option.

  3. Pilih menu dropdown shell, lalu pilih Azure Cloud Shell (bash).

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Azure Cloud Shell (bash) selected.

  4. Shell baru terbuka.

Masuk ke Azure menggunakan Azure CLI

  1. Di terminal Visual Studio Code, jalankan perintah berikut untuk masuk ke Azure:

    az login
    
  2. Masuk ke akun Azure Anda melalui browser yang terbuka.

Untuk bekerja dengan grup sumber daya di Azure, masuk ke akun Azure Anda dari terminal Visual Studio Code. Pastikan Anda telah menginstal Azure PowerShell.

  1. Pada menu Terminal, pilih Terminal Baru. Jendela terminal biasanya terbuka di bagian bawah layar Anda.

  2. Shell default biasanya pwsh, seperti yang ditunjukkan di sisi kanan jendela terminal.

    Screenshot of the Visual Studio Code terminal window, with p w s h shown as the shell option.

  3. Pilih menu dropdown shell, lalu pilih Azure Cloud Shell (PowerShell).

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Azure Cloud Shell (PowerShell) selected.

  4. Shell baru terbuka.

Masuk ke Azure menggunakan Azure PowerShell

  1. Di terminal Visual Studio Code, jalankan perintah berikut untuk masuk ke Azure:

    Connect-AzAccount
    
  2. Masuk ke akun Azure Anda melalui browser yang terbuka.

Buat dua identitas beban kerja

Selanjutnya, buat dua identitas beban kerja di ID Microsoft Entra: satu untuk lingkungan pengujian Anda dan satu lagi untuk lingkungan produksi Anda.

  1. Jalankan kode berikut untuk menentukan variabel untuk nama pengguna GitHub dan nama repositori Anda. Pastikan Anda mengganti mygithubuser dengan nama pengguna GitHub Anda, yang Anda catat sebelumnya dalam latihan ini. Pastikan juga Anda menentukan nama repositori GitHub yang benar.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-end-to-end'
    
  2. Buat identitas beban kerja untuk penyebaran ke lingkungan pengujian Anda. Identitas beban kerja memerlukan dua info masuk terfederasi: satu digunakan saat alur kerja menjalankan tugas validasi, karena tugas ini tidak terkait dengan lingkungan GitHub. Yang kedua digunakan saat alur kerja menjalankan tugas deploy, yang berjalan terhadap lingkungan Test GitHub.

    testApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-end-to-end-test')
    testApplicationRegistrationObjectId=$(echo $testApplicationRegistrationDetails | jq -r '.id')
    testApplicationRegistrationAppId=$(echo $testApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-test\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Test\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-test-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  3. Jalankan kode berikut, yang membuat identitas beban kerja serupa dan kredensial federasi untuk lingkungan produksi:

    productionApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-end-to-end-production')
    productionApplicationRegistrationObjectId=$(echo $productionApplicationRegistrationDetails | jq -r '.id')
    productionApplicationRegistrationAppId=$(echo $productionApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-production\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Production\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-production-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. Jalankan kode berikut untuk menentukan variabel untuk nama pengguna GitHub dan nama repositori Anda. Pastikan Anda mengganti mygithubuser dengan nama pengguna GitHub Anda, yang Anda catat sebelumnya dalam latihan ini. Pastikan juga Anda menentukan nama repositori GitHub yang benar.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-end-to-end'
    
  2. Jalankan kode berikut, yang membuat identitas beban kerja untuk lingkungan pengujian dan mengaitkannya dengan repositori GitHub Anda:

    $testApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-end-to-end-test'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-test' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Test"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-test-branch' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    
  3. Jalankan kode berikut, yang mengikuti proses serupa untuk lingkungan produksi:

    $productionApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-end-to-end-production'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-production' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Production"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-production-branch' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    

Buat dua grup sumber daya di Azure dan berikan akses identitas beban kerja

Selanjutnya, buat grup sumber daya untuk setiap lingkungan. Proses ini juga memberikan identitas beban kerja masing-masing peran Kontributor pada grup sumber daya, yang memungkinkan alur kerja Anda disebarkan ke grup sumber daya.

  1. Untuk membuat grup sumber daya lingkungan pengujian dan memberikan akses identitas beban kerja ke dalamnya, jalankan perintah Azure CLI berikut ini di terminal Visual Studio Code:

    testResourceGroupResourceId=$(az group create --name ToyWebsiteTest --location westus3 --query id --output tsv)
    
    az ad sp create --id $testApplicationRegistrationObjectId
    az role assignment create \
       --assignee $testApplicationRegistrationAppId \
       --role Contributor \
       --scope $testResourceGroupResourceId
    
  2. Jalankan proses serupa untuk membuat grup sumber daya lingkungan produksi:

    productionResourceGroupResourceId=$(az group create --name ToyWebsiteProduction --location westus3 --query id --output tsv)
    
    az ad sp create --id $productionApplicationRegistrationObjectId
    az role assignment create \
       --assignee $productionApplicationRegistrationAppId \
       --role Contributor \
       --scope $productionResourceGroupResourceId
    
  1. Untuk membuat grup sumber daya lingkungan pengujian dan memberikan akses identitas beban kerja ke dalamnya, jalankan perintah Azure PowerShell berikut ini di terminal Visual Studio Code:

    $testResourceGroup = New-AzResourceGroup -Name ToyWebsiteTest -Location westus3
    
    New-AzADServicePrincipal -AppId $($testApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($testApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($testResourceGroup.ResourceId)
    
  2. Jalankan proses serupa untuk membuat grup sumber daya lingkungan produksi:

    $productionResourceGroup = New-AzResourceGroup -Name ToyWebsiteProduction -Location westus3
    
    New-AzADServicePrincipal -AppId $($productionApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($productionApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($productionResourceGroup.ResourceId)
    

Siapkan rahasia GitHub

Jalankan kode berikut untuk menghasilkan nilai yang perlu Anda buat sebagai rahasia GitHub:

echo "AZURE_CLIENT_ID_TEST: $testApplicationRegistrationAppId"
echo "AZURE_CLIENT_ID_PRODUCTION: $productionApplicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID_TEST: $($testApplicationRegistration.AppId)"
Write-Host "AZURE_CLIENT_ID_PRODUCTION: $($productionApplicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

Membuat rahasia GitHub

Anda telah membuat dua identitas beban kerja, dan grup sumber daya yang dapat mereka sebarkan. Selanjutnya, buat rahasia di Tindakan GitHub.

  1. Di browser Anda, navigasikan ke repositori GitHub Anda.

  2. Pilih Setelan>Rahasia>Tindakan.

  3. Pilih Rahasia repositori baru.

    Screenshot of the GitHub interface showing the 'Secrets' page, with the 'Create repository secret' button highlighted.

  4. Beri nama rahasia AZURE_CLIENT_ID_TEST.

  5. Di bidang Nilai, tempel GUID dari baris pertama keluaran terminal. Jangan sertakan AZURE_CLIENT_ID_TEST, titik dua, atau spasi apa pun dalam nilai.

  6. Pilih Tambahkan rahasia.

    Screenshot of the GitHub interface showing the 'New Secret' page, with the name and value completed and the 'Add secret' button highlighted.

  7. Ulangi proses untuk membuat rahasia untuk AZURE_CLIENT_ID_PRODUCTION, AZURE_TENANT_ID, dan AZURE_SUBSCRIPTION_ID, menyalin nilai dari bidang yang sesuai di keluaran terminal.

  8. Verifikasi bahwa daftar rahasia Anda sekarang menunjukkan keempat rahasia.

    Screenshot of the GitHub interface showing the list of secrets, including both the test and production secrets.

Membuat lingkungan di GitHub

  1. Di browser Anda, buka Pengaturan>Lingkungan.

  2. Pilih Lingkungan baru.

    Screenshot of the GitHub interface that shows the Environments page and the button for creating an environment.

  3. Masukkan Pengujian sebagai nama lingkungan.

    Screenshot of the GitHub page for a new environment named Test, with the Configure environment button.

  4. Pilih Konfigurasikan lingkungan.

  5. Pilih Lingkungan untuk kembali ke daftar lingkungan.

    Screenshot of the GitHub page for a new environment named Test, with the Environment link.

  6. Ulangi proses untuk membuat lingkungan lain bernama Produksi.

Catatan

Dalam modul sebelumnya di jalur pembelajaran ini, Anda menambahkan aturan perlindungan ke lingkungan produksi Anda. Dalam modul ini, untuk mempermudah, Anda melewatkan aturan perlindungan. Namun, Anda dapat menambahkan aturan perlindungan sendiri jika mau.