Bagikan melalui


Pola CI/CD menggunakan Workflow Orchestration Manager

Penting

Pada 1 Januari 2026 Anda tidak akan lagi dapat membuat instans Airflow baru menggunakan Workflow Orchestration Manager ADF. Kami menyarankan agar Anda memigrasikan semua beban kerja Workflow Orchestration Manager (Apache Airflow di Azure Data Factory) ke pekerjaan Apache Airflow di Microsoft Fabric sebelum 31 Desember 2025.

Untuk informasi selengkapnya atau untuk dukungan selama migrasi Anda ke Apache Airflow di Microsoft Fabric, hubungi Dukungan Microsoft.

Workflow Orchestration Manager menyediakan cara sederhana dan efisien untuk membuat dan mengelola lingkungan Apache Airflow. Layanan ini memungkinkan Anda menjalankan alur data dalam skala besar dengan mudah. Ada dua metode utama untuk menjalankan DAG di Workflow Orchestration Manager. Anda dapat mengunggah file DAG di penyimpanan blob Anda dan menautkannya dengan lingkungan Airflow. Atau, Anda dapat menggunakan fitur Git-sync untuk secara otomatis menyinkronkan repositori Git Anda dengan lingkungan Airflow.

Bekerja dengan alur data di Airflow mengharuskan Anda untuk sering membuat atau memperbarui DAG, plugin, dan file persyaratan Anda, berdasarkan kebutuhan alur kerja Anda. Meskipun pengembang dapat mengunggah atau mengedit file DAG secara manual di penyimpanan blob, banyak organisasi lebih suka menggunakan pendekatan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) untuk penyebaran kode. Artikel ini memandu Anda melalui pola penyebaran yang direkomendasikan untuk mengintegrasikan dan menyebarkan DAG Apache Airflow Anda dengan Workflow Orchestration Manager dengan lancar.

Memahami CI/CD

Integrasi berkelanjutan

Integrasi berkelanjutan adalah praktik pengembangan perangkat lunak yang menekankan integrasi perubahan kode yang sering dan otomatis ke dalam repositori bersama. Ini melibatkan pengembang secara teratur melakukan kode mereka, dan pada setiap penerapan, alur CI otomatis membangun kode, menjalankan pengujian, dan melakukan pemeriksaan validasi. Tujuan utamanya adalah untuk mendeteksi dan mengatasi masalah integrasi di awal proses pengembangan dan memberikan umpan balik yang cepat kepada pengembang.

CI memastikan bahwa basis kode tetap dalam keadaan terus-menerus dapat diuji dan dapat disebarkan. Praktik ini mengarah pada peningkatan kualitas kode, kolaborasi, dan kemampuan untuk menangkap dan memperbaiki bug sebelum mereka menjadi masalah yang signifikan.

Pengiriman berkelanjutan

Pengiriman berkelanjutan adalah ekstensi CI yang mengambil otomatisasi selangkah lebih jauh. Meskipun CI berfokus pada mengotomatiskan fase integrasi dan pengujian, CD mengotomatiskan penyebaran perubahan kode pada produksi atau lingkungan target lainnya. Praktik ini membantu organisasi merilis pembaruan perangkat lunak dengan cepat dan andal. Ini mengurangi kesalahan dalam penyebaran manual dan memastikan bahwa perubahan kode yang disetujui dikirimkan kepada pengguna dengan cepat.

Alur kerja CI/CD dalam Workflow Orchestration Manager

Cuplikan layar yang memperlihatkan pola CI/CD yang dapat digunakan di Workflow Orchestration Manager.

Sinkronisasi Git dengan integrasi runtime Dev/QA

Petakan lingkungan Workflow Orchestration Manager Anda dengan cabang pengembangan/QA repositori Git Anda.

Alur CI dengan runtime integrasi Dev/QA

Ketika permintaan pull (PR) dibuat dari cabang fitur ke cabang pengembangan, itu memicu alur PR. Alur ini dirancang untuk melakukan pemeriksaan kualitas secara efisien pada cabang fitur Anda, memastikan integritas dan keandalan kode. Anda dapat menyertakan jenis pemeriksaan berikut dalam alur:

  • Pengujian dependensi Python: Pengujian ini menginstal dan memverifikasi kebenaran dependensi Python untuk memastikan bahwa dependensi proyek dikonfigurasi dengan benar.
  • Analisis kode dan linting: Alat untuk analisis kode statis dan linting diterapkan untuk mengevaluasi kualitas kode dan kepatuhan terhadap standar pengodean.
  • Pengujian Airflow DAG: Pengujian ini menjalankan pengujian validasi, termasuk pengujian untuk definisi DAG dan pengujian unit yang dirancang khusus untuk DAG Airflow.
  • Pengujian unit untuk operator kustom Airflow, kait, sensor, dan pemicu

Jika salah satu pemeriksaan ini gagal, alur akan dihentikan. Anda kemudian perlu mengatasi masalah yang diidentifikasi.

Sinkronisasi Git dengan runtime integrasi produksi

Petakan lingkungan Workflow Orchestration Manager Anda dengan cabang produksi repositori Git Anda.

Alur PR dengan runtime integrasi produksi

Praktik terbaik adalah mempertahankan lingkungan produksi terpisah untuk mencegah setiap fitur pengembangan dapat diakses publik.

Setelah cabang fitur berhasil bergabung ke cabang pengembangan, Anda dapat membuat permintaan pull ke cabang produksi untuk membuat fitur yang baru digabungkan menjadi publik. Permintaan pull ini memicu alur PR yang melakukan pemeriksaan kualitas cepat pada cabang pengembangan. Pemeriksaan kualitas memastikan bahwa semua fitur terintegrasi dengan benar dan tidak ada kesalahan di lingkungan produksi.

Manfaat menggunakan alur kerja CI/CD di Workflow Orchestration Manager

  • Pendekatan fail-fast: Tanpa integrasi proses CI/CD, saat pertama kali Anda menyadari bahwa DAG berisi kesalahan adalah kemungkinan ketika didorong ke GitHub, disinkronkan dengan Workflow Orchestration Manager, dan menimbulkan Import Error. Sementara itu, pengembang lain dapat tidak sadar menarik kode yang rusak dari repositori, yang berpotensi menimbulkan inefisiensi di kemudian hari.
  • Peningkatan kualitas kode: Jika Anda mengabaikan pemeriksaan mendasar seperti verifikasi sintaksis, impor yang diperlukan, dan memeriksa praktik pengodean terbaik lainnya, Anda meningkatkan kemungkinan pengiriman kode subparus.

Pola penyebaran di Workflow Orchestration Manager

Kami merekomendasikan dua pola penyebaran.

Pola 1: Mengembangkan alur data langsung di Workflow Orchestration Manager

Anda dapat mengembangkan alur data secara langsung di Workflow Orchestration Manager saat Anda menggunakan pola 1.

Prerequisites

  • Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai. Buat atau pilih instans Data Factory yang ada di wilayah tempat pratinjau Workflow Orchestration Manager didukung.
  • Anda memerlukan akses ke repositori GitHub.

Advantages

  • Tidak diperlukan lingkungan pengembangan lokal: Workflow Orchestration Manager menangani infrastruktur, pembaruan, dan pemeliharaan yang mendasarinya, mengurangi overhead operasional pengelolaan kluster Airflow. Layanan ini memungkinkan Anda untuk fokus membangun dan mengelola alur kerja daripada mengelola infrastruktur.
  • Skalabilitas: Workflow Orchestration Manager menyediakan kemampuan penskalaan otomatis untuk menskalakan sumber daya sesuai kebutuhan, memastikan bahwa alur data Anda dapat menangani peningkatan beban kerja atau ledakan aktivitas tanpa intervensi manual.
  • Pemantauan dan pengelogan: Workflow Orchestration Manager mencakup log diagnostik dan pemantauan untuk membantu Anda melacak eksekusi alur kerja Anda, mendiagnosis masalah, menyiapkan pemberitahuan, dan mengoptimalkan performa.

Workflow

  1. Gunakan fitur Git-sync.

    Dalam alur kerja ini, tidak ada persyaratan untuk membangun lingkungan lokal Anda sendiri. Sebagai gantinya, Anda dapat mulai dengan menggunakan fitur Sinkronisasi Git yang ditawarkan oleh Workflow Orchestration Manager. Fitur ini secara otomatis menyinkronkan file DAG Anda dengan server web Airflow, penjadwal, dan pekerja. Sekarang Anda dapat mengembangkan, menguji, dan menjalankan alur data Anda langsung melalui UI Workflow Orchestration Manager.

    Pelajari selengkapnya tentang cara menggunakan fitur Workflow Orchestration Manager Git-sync.

  2. Membuat lingkungan untuk cabang fitur masing-masing.

    Anda dapat memilih cabang dari repositori Anda untuk disinkronkan dengan Workflow Orchestration Manager. Kemampuan ini memungkinkan Anda membuat lingkungan Airflow individual untuk setiap cabang fitur. Dengan cara ini, pengembang dapat mengerjakan tugas tertentu untuk alur data.

  3. Buat permintaan pull.

    Lanjutkan untuk mengirimkan permintaan pull ke runtime integrasi lingkungan pengembangan Airflow setelah Anda mengembangkan dan menguji fitur Anda secara menyeluruh dalam lingkungan Airflow khusus Anda.

Pola 2: Mengembangkan DAG secara lokal dan menyebarkan pada Workflow Orchestration Manager

Anda dapat mengembangkan DAG secara lokal dan menyebarkannya di Workflow Orchestration Manager saat Anda menggunakan pola 2.

Prerequisites

  • Anda memerlukan akses ke repositori GitHub.
  • Pastikan setidaknya satu cabang repositori kode Anda disinkronkan dengan Workflow Orchestration Manager untuk melihat perubahan kode pada layanan.

Advantages

Anda dapat membatasi akses ke sumber daya Azure hanya untuk admin.

Workflow

  1. Siapkan lingkungan lokal.

    Mulailah dengan menyiapkan lingkungan pengembangan lokal untuk Apache Airflow di komputer pengembangan Anda. Di lingkungan ini, Anda dapat mengembangkan dan menguji kode Airflow Anda, termasuk DAG dan tugas. Pendekatan ini memungkinkan Anda mengembangkan alur tanpa mengandalkan akses langsung ke sumber daya Azure.

  2. Gunakan fitur Git-sync.

    Sinkronkan cabang repositori GitHub Anda dengan Workflow Orchestration Manager.

    Pelajari selengkapnya tentang cara menggunakan fitur Workflow Orchestration Manager Git-sync.

  3. Gunakan Workflow Orchestration Manager sebagai lingkungan produksi.

    Setelah berhasil mengembangkan dan menguji alur data pada penyiapan lokal, Anda dapat mengajukan permintaan pull ke cabang yang disinkronkan dengan Workflow Orchestration Manager. Setelah cabang digabungkan, gunakan fitur Workflow Orchestration Manager seperti autoscaling dan pemantauan dan pengelogan di tingkat produksi.

Sampel alur CI/CD

Untuk informasi selengkapnya, lihat:

  1. Salin kode DAG yang disebarkan di runtime integrasi Workflow Orchestration Manager dengan menggunakan fitur Git-sync.

    from datetime import datetime
    from airflow import DAG
    from airflow.operators.bash import BashOperator
    
    with DAG(
        dag_id="airflow-ci-cd-tutorial",
        start_date=datetime(2023, 8, 15),
        schedule="0 0 * * *",
        tags=["tutorial", "CI/CD"]
    ) as dag:
        # Tasks are represented as operators
        task1 = BashOperator(task_id="task1", bash_command="echo task1")
        task2 = BashOperator(task_id="task2", bash_command="echo task2")
        task3 = BashOperator(task_id="task3", bash_command="echo task3")
        task4 = BashOperator(task_id="task4", bash_command="echo task4")
    
        # Set dependencies between tasks
        task1 >> task2 >> task3 >> task4
    
  2. Buat pipa CI/CD. Anda memiliki dua opsi: Tindakan Azure DevOps atau GitHub.

    1. Opsi Azure DevOps: Buat file azure-devops-ci-cd.yaml dan salin kode berikut. Alur memicu permintaan pull atau permintaan push ke cabang pengembangan:

      trigger:
      - dev
      
      pr:
      - dev
      
      pool:
        vmImage: ubuntu-latest
      strategy:
        matrix:
          Python3.11:
            python.version: '3.11.5'
      
      steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '$(python.version)'
        displayName: 'Use Python $(python.version)'
      
      - script: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
        displayName: 'Install dependencies'
      
      - script: |
          airflow webserver &
          airflow db init
          airflow scheduler &
          pytest
        displayName: 'Pytest'
      

      Untuk informasi selengkapnya, lihat Azure Pipelines.

    2. Opsi tindakan GitHub: Buat .github/workflows direktori di repositori GitHub Anda.

      1. .github/workflows Di direktori, buat file bernama github-actions-ci-cd.yml.

      2. Salin kode berikut. Alur kerja dipicu setiap kali ada permintaan pull atau permintaan push ke cabang pengembangan.

        name: GitHub Actions CI/CD
        
        on:
          pull_request:
            branches:
              - "dev"
          push:
            branches:
              - "dev"
        
        jobs:
          flake8:
            strategy:
              matrix:
                python-version: [3.11.5]
            runs-on: ubuntu-latest
            steps:
              - name: Check out source repository
                uses: actions/checkout@v4
              - name: Setup Python
                uses: actions/setup-python@v4
                with:
                  python-version: ${{matrix.python-version}}
              - name: flake8 Lint
                uses: py-actions/flake8@v1
                with:
                  max-line-length: 120
          tests:
            strategy:
              matrix:
                python-version: [3.11.5]
            runs-on: ubuntu-latest
            needs: [flake8]
            steps:
              - uses: actions/checkout@v4
              - name: Setup Python
                uses: actions/setup-python@v4
                with:
                  python-version: ${{matrix.python-version}}
              - name: Install dependencies
                run: |
                  python -m pip install --upgrade pip
                  pip install -r requirements.txt
              - name: Pytest
                run: |
                  airflow webserver &
                  airflow db init
                  airflow scheduler &
                  pytest tests/
        
  3. Di folder pengujian, buat pengujian untuk DAG Airflow. Berikut adalah beberapa contoh:

    1. Setidaknya, sangat penting untuk melakukan pengujian awal dengan menggunakan import_errors untuk memastikan integritas dan kebenaran DAG. Pengujian ini memastikan:

      • DAG Anda tidak berisi siklikasi: Siklikitas, di mana tugas membentuk perulangan atau dependensi melingkar dalam alur kerja, dapat menyebabkan perulangan eksekusi yang tidak terduga dan tak terbatas.

      • Tidak ada kesalahan impor: Kesalahan impor dapat muncul karena masalah seperti dependensi yang hilang, jalur modul yang salah, atau kesalahan pengodean.  

      • Tugas didefinisikan dengan benar: Konfirmasikan bahwa tugas dalam DAG Anda ditentukan dengan benar.

        @pytest.fixture()
        
        def dagbag():
            return DagBag(dag_folder="dags")
        
        def test_no_import_errors(dagbag):
            """
            Test Dags to contain no import errors.
            """
            assert not dagbag.import_errors
        
    2. Uji untuk memastikan ID DAG tertentu ada di cabang fitur Anda sebelum menggabungkannya ke cabang pengembangan.

      def test_expected_dags(dagbag):
          """
          Test whether expected dag Ids are present.
          """
          expected_dag_ids = ["airflow-ci-cd-tutorial"]
      
          for dag_id in expected_dag_ids:
              dag = dagbag.get_dag(dag_id)
      
              assert dag is not None
              assert dag_id == dag.dag_id
      
    3. Uji untuk memastikan hanya tag yang disetujui yang terkait dengan DAG Anda. Pengujian ini membantu memberlakukan penggunaan tag yang disetujui.

      def test_requires_approved_tag(dagbag):
          """
          Test if DAGS contain one or more tags from list of approved tags only.
          """
          Expected_tags = {"tutorial", "CI/CD"}
          dagIds = dagbag.dag_ids
      
          for id in dagIds:
              dag = dagbag.get_dag(id)
              assert dag.tags
              if Expected_tags:
                  assert not set(dag.tags) - Expected_tags
      
  4. Sekarang ketika Anda menaikkan permintaan pull ke cabang pengembangan, Anda dapat melihat bahwa tindakan GitHub memicu alur CI untuk menjalankan semua pengujian.