Mengonfigurasi Pengiriman Berkelanjutan dengan Azure Pipelines
Gunakan Azure Pipelines untuk menyebarkan secara otomatis ke Azure Functions. Azure Pipelines memungkinkan Anda membangun, menguji, dan menyebarkan dengan integrasi berkelanjutan (CI) dan pengiriman berkelanjutan (CD) menggunakan Azure DevOps.
Alur YAML ditentukan menggunakan file YAML di repositori Anda. Langkah adalah blok penyusun terkecil dari alur dan dapat menjadi skrip atau tugas (skrip yang dikemas sebelumnya). Pelajari tentang konsep utama dan komponen yang membentuk sebuah alur.
Anda akan menggunakan tugas AzureFunctionApp untuk menyebarkan ke Azure Functions. Sekarang ada dua versi tugas AzureFunctionApp (AzureFunctionApp@1, AzureFunctionApp@2). AzureFunctionApp@2 menyertakan dukungan validasi yang ditingkatkan yang membuat alur cenderung gagal karena kesalahan.
Pilih versi tugas Anda di bagian atas artikel. Alur YAML tidak tersedia untuk Azure DevOps 2019 dan versi yang lebih lama.
Prasyarat
Organisasi Azure DevOps. Jika Anda tidak memilikinya, Anda dapat membuatnya secara gratis. Jika tim Anda sudah memilikinya, pastikan Anda adalah administrator proyek Azure DevOps yang ingin Anda gunakan.
Kemampuan untuk menjalankan jaringan alur pada agen yang dihosting Microsoft. Anda dapat membeli pekerjaan paralel atau Anda dapat meminta tingkat gratis.
Jika Anda berencana menggunakan GitHub alih-alih Azure Repos, Anda juga memerlukan repositori GitHub. Jika Anda tidak memiliki akun GitHub, Anda dapat membuatnya secara gratis.
Aplikasi fungsi yang ada di Azure yang memiliki kode sumbernya di repositori yang didukung. Jika Anda belum memiliki proyek kode Azure Functions, Anda bisa membuatnya dengan menyelesaikan artikel khusus bahasa berikut:
Ingatlah untuk mengunggah proyek kode lokal ke respositori GitHub atau Azure Repos setelah Anda menerbitkannya ke aplikasi fungsi Anda.
Membuat aplikasi Anda
- Masuk ke organisasi Azure DevOps Anda dan arahkan ke proyek Anda.
- Dalam proyek Anda, arahkan ke halaman Alur. Lalu pilih Rilis baru.
- Pilih salah satu opsi ini untuk Di mana kode Anda?:
- GitHub: Anda mungkin diarahkan ke GitHub untuk masuk. Jika demikian, masukkan informasi masuk GitHub Anda. Ketika ini adalah koneksi pertama ke GitHub, wizard juga memancang Anda melalui proses menghubungkan DevOps ke akun GitHub Anda.
- Azure Repos Git: Anda segera dapat memilih repositori di proyek DevOps Anda saat ini.
- Ketika daftar repositori muncul, pilih sampel repositori aplikasi Anda.
- Azure Pipelines menganalisis repositori Anda dan di Mengonfigurasi alur Anda menyediakan daftar templat potensial. Pilih templat aplikasi fungsi yang sesuai untuk bahasa Anda. Jika Anda tidak melihat templat yang benar pilih Perlihatkan lainnya.
- Pilih Simpan dan jalankan, lalu pilih Terapkan langsung ke cabang utama, lalu pilih Simpan dan jalankan lagi.
- Menjalankan baru sudah dimulai. Tunggu sampai eksekusi selesai.
Contoh alur build YAML
Alur khusus bahasa berikut dapat digunakan untuk membangun aplikasi.
Anda dapat menggunakan sampel berikut untuk membuat file YAML untuk membangun aplikasi .NET.
Jika Anda melihat kesalahan saat membuat aplikasi, verifikasi bahwa versi .NET yang Anda gunakan cocok dengan versi Azure Functions Anda. Untuk informasi selengkapnya, lihat Ringkasan versi runtime Azure Functions.
pool:
vmImage: 'windows-latest'
steps:
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
inputs:
command: publish
arguments: '--configuration Release --output publish_output'
projects: '*.csproj'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
Menerapkan aplikasi Anda
Anda akan menyebarkan dengan tugas Sebarkan Aplikasi Azure Function. Tugas ini memerlukan koneksi layanan Azure sebagai input. Koneksi layanan Azure menyimpan kredensial untuk menyambungkan dari Azure Pipelines ke Azure.
Untuk menyebarkan ke Azure Functions, tambahkan cuplikan berikut di akhir file azure-pipelines.yml
Anda. Default appType
adalah Windows. Anda dapat menentukan Linux dengan mengatur appType
ke functionAppLinux
.
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureFunctionApp@1 # Add this at the end of your file
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux # default is functionApp
appName: $(appName)
package: $(System.ArtifactsDirectory)/**/*.zip
#Uncomment the next lines to deploy to a deployment slot
#Note that deployment slots is not supported for Linux Dynamic SKU
#deployToSlotOrASE: true
#resourceGroupName: '<Resource Group Name>'
#slotName: '<Slot name>'
Cuplikan mengasumsikan bahwa langkah-langkah build dalam file YAML Anda menghasilkan arsip zip di folder $(System.ArtifactsDirectory)
pada agen Anda.
Menyebarkan kontainer
Anda dapat secara otomatis menyebarkan kode Anda untuk Azure Functions sebagai kontainer kustom setelah setiap build yang berhasil. Untuk mempelajari selengkapnya tentang kontainer, lihat Membuat fungsi di Linux menggunakan kontainer kustom.
Menyebarkan dengan tugas Azure Function App for Container
Cara paling sederhana untuk menyebarkan ke kontainer adalah dengan menggunakan tugas Azure Function App on Container Deploy.
Untuk menyebarkan, tambahkan cuplikan berikut di akhir file YAML Anda:
trigger:
- main
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: <Docker registry service connection>
imageRepository: <Name of your image repository>
containerRegistry: <Name of the Azure container registry>
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
tag: '$(Build.BuildId)'
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureFunctionAppContainer@1 # Add this at the end of your file
inputs:
azureSubscription: '<Azure service connection>'
appName: '<Name of the function app>'
imageName: $(containerRegistry)/$(imageRepository):$(tag)
Cuplikan tersebut mendorong gambar Docker ke Azure Container Registry Anda. Tugas Azure Function App on Container Deploy menarik citra Docker yang sesuai dengan BuildId
dari repositori yang ditentukan, lalu menyebarkan citra tersebut.
Menyebarkan ke slot
Anda dapat mengonfigurasi aplikasi fungsi sehingga memiliki beberapa slot. Slot memungkinkan Anda menyebarkan aplikasi dengan aman dan mengujinya sebelum menyediakannya kepada pelanggan Anda.
Cuplikan YAML berikut menunjukkan cara menyebarkan ke slot pentahapan, lalu bertukar ke slot produksi:
- task: AzureFunctionApp@1
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux
appName: <Name of the Function app>
package: $(System.ArtifactsDirectory)/**/*.zip
deployToSlotOrASE: true
resourceGroupName: <Name of the resource group>
slotName: staging
- task: AzureAppServiceManage@0
inputs:
azureSubscription: <Azure service connection>
WebAppName: <name of the Function app>
ResourceGroupName: <name of resource group>
SourceSlot: staging
SwapWithProduction: true
Membuat alur dengan Azure CLI
Untuk membuat alur build di Azure, gunakan az functionapp devops-pipeline create
perintah. Alur build dibuat untuk membuat dan merilis perubahan kode apa pun yang dibuat di repositori Anda. Perintah itu menghasilkan file YAML baru yang menentukan alur build dan rilis kemudian membawa ke repositori Anda. Prasyarat untuk perintah ini bergantung pada lokasi kode Anda.
Jika kode Anda ada di GitHub:
Anda harus memiliki izin menulis pada langganan Anda.
Anda harus menjadi administrator proyek di Azure DevOps.
Anda harus memiliki izin untuk membuat token akses pribadi GitHub (PAT) yang memiliki izin yang memadai. Untuk informasi selengkapnya, lihat Persyaratan izin GitHub PAT.
Anda harus memiliki izin untuk mengirim ke cabang utama di repositori GitHub sehingga Anda dapat melakukan pembuatan otomatis file YAML.
Jika kode Anda berada di Azure Repos:
Anda harus memiliki izin menulis pada langganan Anda.
Anda harus menjadi administrator proyek di Azure DevOps.
Membuat aplikasi Anda
- Masuk ke organisasi Azure DevOps Anda dan arahkan ke proyek Anda.
- Dalam proyek Anda, arahkan ke halaman Alur. Lalu, pilih tindakan untuk membuat alur baru.
- Menelusuri langkah-langkah wizard dengan terlebih dahulu memilih GitHub sebagai lokasi kode sumber Anda.
- Anda dapat diarahkan ke GitHub untuk masuk. Jika demikian, masukkan informasi masuk GitHub Anda.
- Ketika daftar repositori muncul, pilih sampel repositori aplikasi Anda.
- Azure Pipelines akan menganalisis repositori Anda dan merekomendasikan template. Pilih Simpan dan jalankan, lalu pilih Terapkan langsung ke cabang utama, lalu pilih Simpan dan jalankan lagi.
- Menjalankan baru sudah dimulai. Tunggu sampai eksekusi selesai.
Contoh alur build YAML
Alur khusus bahasa berikut dapat digunakan untuk membangun aplikasi.
Anda dapat menggunakan sampel berikut untuk membuat file YAML untuk membangun aplikasi .NET:
pool:
vmImage: 'windows-latest'
steps:
- script: |
dotnet restore
dotnet build --configuration Release
- task: DotNetCoreCLI@2
inputs:
command: publish
arguments: '--configuration Release --output publish_output'
projects: '*.csproj'
publishWebProjects: false
modifyOutputPath: false
zipAfterPublish: false
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
Menerapkan aplikasi Anda
Anda akan menyebarkan dengan tugas Azure Function App Deploy v2 . Tugas ini memerlukan koneksi layanan Azure sebagai input. Koneksi layanan Azure menyimpan kredensial untuk menyambungkan dari Azure Pipelines ke Azure.
Versi v2 tugas mencakup dukungan untuk tumpukan aplikasi yang lebih baru untuk .NET, Python, dan Node. Tugas ini mencakup pemeriksaan pra-penyebaran jaringan. Ketika ada masalah pra-penyebaran, penyebaran berhenti.
Untuk menyebarkan ke Azure Functions, tambahkan cuplikan berikut di akhir file azure-pipelines.yml
Anda. Default appType
adalah Windows. Anda dapat menentukan Linux dengan mengatur appType
ke functionAppLinux
.
trigger:
- main
variables:
# Azure service connection established during pipeline creation
azureSubscription: <Name of your Azure subscription>
appName: <Name of the function app>
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureFunctionApp@2 # Add this at the end of your file
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux # default is functionApp
appName: $(appName)
package: $(System.ArtifactsDirectory)/**/*.zip
deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required. Deployment method. Default: auto.
#Uncomment the next lines to deploy to a deployment slot
#Note that deployment slots is not supported for Linux Dynamic SKU
#deployToSlotOrASE: true
#resourceGroupName: '<Resource Group Name>'
#slotName: '<Slot name>'
Cuplikan mengasumsikan bahwa langkah-langkah build dalam file YAML Anda menghasilkan arsip zip di folder $(System.ArtifactsDirectory)
pada agen Anda.
Menyebarkan kontainer
Anda dapat secara otomatis menyebarkan kode Anda untuk Azure Functions sebagai kontainer kustom setelah setiap build yang berhasil. Untuk mempelajari selengkapnya tentang kontainer, lihat Bekerja dengan kontainer dan Azure Functions .
Menyebarkan dengan tugas Azure Function App for Container
Cara paling sederhana untuk menyebarkan ke kontainer adalah dengan menggunakan tugas Azure Function App on Container Deploy.
Untuk menyebarkan, tambahkan cuplikan berikut di akhir file YAML Anda:
trigger:
- main
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: <Docker registry service connection>
imageRepository: <Name of your image repository>
containerRegistry: <Name of the Azure container registry>
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
tag: '$(Build.BuildId)'
# Agent VM image name
vmImageName: 'ubuntu-latest'
- task: AzureFunctionAppContainer@1 # Add this at the end of your file
inputs:
azureSubscription: '<Azure service connection>'
appName: '<Name of the function app>'
imageName: $(containerRegistry)/$(imageRepository):$(tag)
Cuplikan tersebut mendorong gambar Docker ke Azure Container Registry Anda. Tugas Azure Function App on Container Deploy menarik citra Docker yang sesuai dengan BuildId
dari repositori yang ditentukan, lalu menyebarkan citra tersebut.
Menyebarkan ke slot
Anda dapat mengonfigurasi aplikasi fungsi sehingga memiliki beberapa slot. Slot memungkinkan Anda menyebarkan aplikasi dengan aman dan mengujinya sebelum menyediakannya kepada pelanggan Anda.
Cuplikan YAML berikut menunjukkan cara menyebarkan ke slot pentahapan, lalu bertukar ke slot produksi:
- task: AzureFunctionApp@2
inputs:
azureSubscription: <Azure service connection>
appType: functionAppLinux
appName: <Name of the Function app>
package: $(System.ArtifactsDirectory)/**/*.zip
deploymentMethod: 'auto'
deployToSlotOrASE: true
resourceGroupName: <Name of the resource group>
slotName: staging
- task: AzureAppServiceManage@0
inputs:
azureSubscription: <Azure service connection>
WebAppName: <name of the Function app>
ResourceGroupName: <name of resource group>
SourceSlot: staging
SwapWithProduction: true
Membuat alur dengan Azure CLI
Untuk membuat alur build di Azure, gunakan az functionapp devops-pipeline create
perintah. Alur build dibuat untuk membuat dan merilis perubahan kode apa pun yang dibuat di repositori Anda. Perintah itu menghasilkan file YAML baru yang menentukan alur build dan rilis kemudian membawa ke repositori Anda. Prasyarat untuk perintah ini bergantung pada lokasi kode Anda.
Jika kode Anda ada di GitHub:
Anda harus memiliki izin menulis pada langganan Anda.
Anda harus menjadi administrator proyek di Azure DevOps.
Anda harus memiliki izin untuk membuat token akses pribadi GitHub (PAT) yang memiliki izin yang memadai. Untuk informasi selengkapnya, lihat Persyaratan izin GitHub PAT.
Anda harus memiliki izin untuk mengirim ke cabang utama di repositori GitHub sehingga Anda dapat melakukan pembuatan otomatis file YAML.
Jika kode Anda berada di Azure Repos:
Anda harus memiliki izin menulis pada langganan Anda.
Anda harus menjadi administrator proyek di Azure DevOps.
Langkah berikutnya
- Tinjau gambaran umum Azure Functions.
- Tinjau gambaran umum Azure DevOps.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk