Bagikan melalui


Pengiriman berkelanjutan dengan GitHub Actions

Anda dapat menggunakan alur kerja GitHub Actions untuk menentukan alur kerja untuk membuat dan menyebarkan kode secara otomatis ke aplikasi fungsi Anda di Azure Functions.

File YAML (.yml) yang menentukan konfigurasi alur kerja dipertahankan di /.github/workflows/ jalur di repositori Anda. Definisi ini berisi tindakan dan parameter yang membentuk alur kerja, yang khusus untuk bahasa pengembangan fungsi Anda. Alur kerja GitHub Actions untuk Functions melakukan tugas berikut, terlepas dari bahasa:

  1. Menyiapkan lingkungan.
  2. Buat proyek kode.
  3. Sebarkan paket ke aplikasi fungsi di Azure.

Tindakan Azure Functions menangani penyebaran ke aplikasi fungsi yang ada di Azure.

Anda dapat membuat file konfigurasi alur kerja untuk penyebaran Anda secara manual. Anda juga dapat membuat file dari sekumpulan templat khusus bahasa dengan salah satu cara berikut:

  • Di portal Microsoft Azure
  • Menggunakan Cli Azure
  • Dari repositori GitHub Anda

Jika Anda tidak ingin membuat file YAML dengan tangan, pilih metode lain di bagian atas artikel.

Prasyarat

  • Akun Azure dengan langganan aktif. Buat akun secara gratis.

  • Akun GitHub. Jika Anda belum memilikinya, daftar gratis.

  • Aplikasi fungsi kerja yang dihosting di Azure dengan kode sumber di repositori GitHub.

  • Azure CLI, saat mengembangkan secara lokal. Anda juga dapat menggunakan Azure CLI di Azure Cloud Shell.

Membuat info masuk penyebaran

Karena GitHub Actions menggunakan profil publikasi Anda untuk mengakses aplikasi fungsi Anda selama penyebaran, Anda harus terlebih dahulu mendapatkan profil penerbitan dan menyimpannya dengan aman sebagai rahasia GitHub.

Penting

Profil penerbitan adalah kredensial berharga yang memungkinkan akses ke sumber daya Azure. Pastikan Anda selalu mengangkut dan menyimpannya dengan aman. Di GitHub, profil penerbitan hanya boleh disimpan dalam rahasia GitHub.

Unduh profil penerbitan Anda

Cara mengunduh profil penerbitan dari aplikasi fungsi Anda:

  1. Pilih halaman Gambaran Umum aplikasi fungsi, kemudian pilih Dapatkan profil penerbitan.

    Unduh profil yang terpublikasikan

  2. Pilih dan salin konten file.

Tambahkan rahasia GitHub

  1. Di GitHub, buka repositori Anda.

  2. Buka Pengaturan.

  3. Pilih Tindakan Rahasia dan variabel>.

  4. Pilih Rahasia repositori baru.

  5. Tambahkan rahasia baru dengan nama AZURE_FUNCTIONAPP_PUBLISH_PROFILE dan nilai yang diatur ke konten file profil penerbitan.

  6. Pilih Tambahkan rahasia.

GitHub sekarang dapat mengautentikasi ke aplikasi fungsi Anda di Azure.

Membuat alur kerja dari templat

Cara terbaik untuk membuat konfigurasi alur kerja secara manual adalah dengan memulai dari templat yang didukung secara resmi.

  1. Pilih Windows atau Linux untuk memastikan bahwa Anda mendapatkan templat untuk sistem operasi yang benar.

    Penyebaran ke Windows menggunakan runs-on: windows-latest.

  2. Salin templat khusus bahasa dari repositori tindakan Azure Functions menggunakan tautan berikut:

  3. env.AZURE_FUNCTIONAPP_NAME Perbarui parameter dengan nama sumber daya aplikasi fungsi Anda di Azure. Anda mungkin secara opsional perlu memperbarui parameter yang mengatur versi bahasa yang digunakan oleh aplikasi Anda, seperti DOTNET_VERSION untuk C#.

  4. Tambahkan file YAML baru ini di /.github/workflows/ jalur di repositori Anda.

Membuat konfigurasi alur kerja di portal

Saat Anda menggunakan portal untuk mengaktifkan GitHub Actions, Functions membuat file alur kerja berdasarkan tumpukan aplikasi Anda dan menerapkannya ke repositori GitHub Anda di direktori yang benar.

Portal secara otomatis mendapatkan profil publikasi Anda dan menambahkannya ke rahasia GitHub untuk repositori Anda.

Selama pembuatan aplikasi fungsi

Anda dapat memulai dengan cepat dengan GitHub Actions melalui tab Penyebaran saat membuat fungsi di portal Azure. Untuk menambahkan alur kerja GitHub Actions saat Anda membuat aplikasi fungsi baru:

  1. Di portal Azure, pilih Penyebaran di alur Buat Aplikasi Fungsi.

    Cuplikan layar opsi Penyebaran di menu Functions.

  2. Aktifkan Penyebaran Berkelanjutan jika Anda ingin setiap pembaruan kode memicu dorongan kode ke portal Azure.

  3. Masukkan organisasi, repositori, dan cabang GitHub Anda.

    Cuplikan layar detail akun pengguna GitHub.

  4. Selesaikan mengonfigurasi aplikasi fungsi Anda. Repositori GitHub Anda sekarang menyertakan file alur kerja baru di /.github/workflows/.

Untuk aplikasi fungsi yang sudah ada

Untuk menambahkan alur kerja GitHub Actions ke aplikasi fungsi yang ada:

  1. Navigasi ke aplikasi fungsi Anda di portal Azure dan pilih Pusat Penyebaran.

  2. Untuk Sumber pilih GitHub. Jika Anda tidak melihat pesan default Membangun dengan GitHub Actions, pilih Ubah penyedia pilih GitHub Actions dan pilih OK.

  3. Jika Anda belum mengizinkan akses GitHub, pilih Otorisasi. Berikan kredensial GitHub Anda dan pilih Masuk. Untuk mengotorisasi akun GitHub yang berbeda, pilih Ubah Akun dan masuk dengan akun lain.

  4. Pilih Organisasi, Repositori, dan Cabang GitHub Anda. Untuk menyebarkan dengan GitHub Actions, Anda harus memiliki akses tulis ke repositori ini.

  5. Di Pengaturan autentikasi, pilih apakah GitHub Actions akan mengautentikasi dengan identitas yang ditetapkan pengguna atau menggunakan kredensial autentikasi Dasar. Untuk autentikasi dasar, kredensial saat ini digunakan.

  6. Pilih File pratinjau untuk melihat file alur kerja yang ditambahkan ke repositori GitHub Anda di github/workflows/.

  7. Pilih Simpan untuk menambahkan file alur kerja ke repositori Anda.

Menambahkan konfigurasi alur kerja ke repositori Anda

Anda dapat menggunakan az functionapp deployment github-actions add perintah untuk membuat file konfigurasi alur kerja dari templat yang benar untuk aplikasi fungsi Anda. File YAML baru kemudian disimpan di lokasi yang benar (/.github/workflows/) di repositori GitHub yang Anda sediakan, sementara file profil publikasi untuk aplikasi Anda ditambahkan ke rahasia GitHub di repositori yang sama.

  1. Jalankan perintah ini az functionapp , ganti nilai githubUser/githubRepo, , MyResourceGroupdan MyFunctionapp:

    az functionapp deployment github-actions add --repo "githubUser/githubRepo" -g MyResourceGroup -n MyFunctionapp --login-with-github
    

    Perintah ini menggunakan metode interaktif untuk mengambil token akses pribadi untuk akun GitHub Anda.

  2. Di jendela terminal, Anda akan melihat sesuatu seperti pesan berikut:

    Please navigate to https://github.com/login/device and enter the user code XXXX-XXXX to activate and retrieve your GitHub personal access token.
    
  3. Salin kode unik XXXX-XXXX , telusuri ke https://github.com/login/device, dan masukkan kode yang Anda salin. Setelah memasukkan kode, Anda akan melihat sesuatu seperti pesan berikut:

    Verified GitHub repo and branch
    Getting workflow template using runtime: java
    Filling workflow template with name: func-app-123, branch: main, version: 8, slot: production, build_path: .
    Adding publish profile to GitHub
    Fetching publish profile with secrets for the app 'func-app-123'
    Creating new workflow file: .github/workflows/master_func-app-123.yml
    
  4. Buka repositori GitHub Anda dan pilih Tindakan. Verifikasi bahwa alur kerja Anda berjalan.

Membuat file konfigurasi alur kerja

Anda dapat membuat file konfigurasi alur kerja GitHub Actions dari templat Azure Functions langsung dari repositori GitHub Anda.

  1. Di GitHub, buka repositori Anda.

  2. Pilih Tindakan dan Alur kerja baru.

  3. Cari fungsi.

    Cuplikan layar pencarian templat fungsi GitHub Actions.

  4. Dalam alur kerja aplikasi fungsi yang ditampilkan yang ditulis oleh Microsoft Azure, temukan alur kerja yang cocok dengan bahasa kode Anda dan pilih Konfigurasikan.

  5. Dalam file YAML yang baru dibuat, perbarui env.AZURE_FUNCTIONAPP_NAME parameter dengan nama sumber daya aplikasi fungsi Anda di Azure. Anda mungkin secara opsional perlu memperbarui parameter yang mengatur versi bahasa yang digunakan oleh aplikasi Anda, seperti DOTNET_VERSION untuk C#.

  6. Verifikasi bahwa file alur kerja baru sedang disimpan dan /.github/workflows/ pilih Terapkan perubahan....

Memperbarui konfigurasi alur kerja

Jika karena alasan tertentu, Anda perlu memperbarui atau mengubah konfigurasi alur kerja yang ada, cukup navigasikan ke /.github/workflows/ lokasi di repositori Anda, buka file YAML tertentu, buat perubahan yang diperlukan, lalu terapkan pembaruan ke repositori.

Contoh: file konfigurasi alur kerja

Contoh templat berikut menggunakan versi 1 functions-action dan untuk autentikasi publish profile . Templat bergantung pada bahasa yang Anda pilih dan sistem operasi tempat aplikasi fungsi Anda disebarkan:

Jika aplikasi fungsi Anda berjalan di Linux, pilih Linux.

name: Deploy DotNet project to Azure Function App

on:
  [push]

env:
  AZURE_FUNCTIONAPP_NAME: 'your-app-name'   # set this to your function app name on Azure
  AZURE_FUNCTIONAPP_PACKAGE_PATH: '.'       # set this to the path to your function app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'                   # set this to the dotnet version to use (e.g. '2.1.x', '3.1.x', '5.0.x')

jobs:
  build-and-deploy:
    runs-on: windows-latest
    environment: dev
    steps:
    - name: 'Checkout GitHub Action'
      uses: actions/checkout@v3

    - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: 'Resolve Project Dependencies Using Dotnet'
      shell: pwsh
      run: |
        pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
        dotnet build --configuration Release --output ./output
        popd

    - name: 'Run Azure Functions Action'
      uses: Azure/functions-action@v1
      id: fa
      with:
        app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
        package: '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output'
        publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}

Tindakan Azure Functions

Tindakan Azure Functions (Azure/azure-functions) menentukan bagaimana kode Anda diterbitkan ke aplikasi fungsi yang ada di Azure, atau ke slot tertentu di aplikasi Anda.

Parameter

Parameter berikut paling umum digunakan dengan tindakan ini:

Parameter Penjelasan
app-name (Wajib) Nama aplikasi fungsi Anda.
slot-name (Opsional) Nama slot penyebaran tertentu yang ingin Anda sebarkan. Slot harus sudah ada di aplikasi fungsi Anda. Ketika tidak ditentukan, kode disebarkan ke slot aktif.
publish-profile (Opsional) Nama rahasia GitHub yang berisi profil penerbitan Anda.

Parameter berikut juga didukung, tetapi hanya digunakan dalam kasus tertentu:

Parameter Penjelasan
package (Opsional) Mengatur subpath di repositori Anda untuk diterbitkan. Secara default, nilai ini diatur ke ., yang berarti semua file dan folder di repositori GitHub disebarkan.
respect-pom-xml (Opsional) Digunakan hanya untuk fungsi Java. Apakah diperlukan agar artefak penyebaran aplikasi Anda berasal dari file pom.xml. Saat menyebarkan aplikasi fungsi Java, Anda harus mengatur parameter ini ke true dan mengatur package ke .. Secara default, parameter ini diatur ke false, yang berarti bahwa package parameter harus menunjuk ke lokasi artefak aplikasi Anda, seperti ./target/azure-functions/
respect-funcignore (Opsional) Apakah GitHub Actions menghormati file .funcignore Anda untuk mengecualikan file dan folder yang ditentukan di dalamnya. Atur nilai ini ke true ketika repositori Anda memiliki file .funcignore dan Anda ingin menggunakannya mengecualikan jalur dan file, seperti konfigurasi editor teks, .vscode/, atau lingkungan virtual Python (.venv/). Pengaturan default-nya false.
scm-do-build-during-deployment (Opsional) Apakah situs penyebaran App Service (Kudu) melakukan operasi pra-penyebaran. Situs penyebaran untuk aplikasi fungsi Anda dapat ditemukan di https://<APP_NAME>.scm.azurewebsites.net/. Ubah pengaturan ini menjadi true saat Anda perlu mengontrol penyebaran di Kudu daripada menyelesaikan dependensi dalam alur kerja GitHub Actions. Nilai defaultnya adalah false. Untuk informasi selengkapnya, lihat pengaturan SCM_DO_BUILD_DURING_DEPLOYMENT .
enable-oryx-build (Opsional) Apakah situs penyebaran Kudu menyelesaikan dependensi proyek Anda dengan menggunakan Oryx. Atur ke true saat Anda ingin menggunakan Oryx untuk mengatasi dependensi proyek Anda dengan menggunakan build jarak jauh alih-alih alur kerja GitHub Actions. Ketika true, Anda juga harus mengatur scm-do-build-during-deployment ke true. Nilai defaultnya adalah false.

Pertimbangan

Ingatlah pertimbangan berikut saat menggunakan tindakan Azure Functions:

  • Saat menggunakan GitHub Actions, kode disebarkan ke aplikasi fungsi Anda menggunakan penyebaran Zip untuk Azure Functions.

  • Kredensial yang diperlukan oleh GitHub untuk terhubung ke Azure untuk penyebaran disimpan sebagai Rahasia di repositori GitHub Anda dan diakses dalam penyebaran sebagai secrets.<SECRET_NAME>.

  • Cara term mudah bagi GitHub Actions untuk mengautentikasi dengan Azure Functions untuk penyebaran adalah dengan menggunakan profil penerbitan. Anda juga dapat mengautentikasi menggunakan perwakilan layanan. Untuk mempelajari lebih lanjut, lihat repositori Tindakan GitHub ini.

  • Tindakan untuk menyiapkan lingkungan dan menjalankan build dihasilkan dari templat, dan spesifik bahasa.

  • Templat menggunakan env elemen untuk menentukan pengaturan yang unik untuk build dan penyebaran Anda.

Langkah berikutnya