Veri Bilimi Okulu

Apache Airflow 3 ile DAG Dosyalarını GitHub'dan Okuma (Airflow Github)
Apache Airflow 3 ile DAG Dosyalarını GitHub’dan Okuma (Airflow Github)
airflow_git_integration_kapak_960x640

Loading

Selamlar! Nihayetinde Airflow DAG dosyalarını GitHub gibi uzak repolardan adam akıllı almamızı sağlayan özellik Apache Airflow 3 ile geldi: GitDagBundle. Daha öncede Airflow Github entegrasyonu gibi DAG dosyalarını dışarıdan bir yerden alıp getirmek için göbeğimiz çatlıyordu. GitSync gibi çözümler kullanıyorduk. Artık Git uzak repoları ve Amazon S3’ten alıp getirmek daha kolay. Bu yazıda GitHub örneği üzerinden konuyu inceleyeceğiz.

Airflow 3.0 ve DAG Sürümleme Devrimi

Airflow 3.0, projenin tarihindeki en büyük güncelleme olarak karşımıza çıkıyor. 2020’de yayınlanan 2.0 sürümünden bu yana geçen dört yılda, Airflow aylık 30 milyonun üzerinde indirme rakamına ulaştı ve 80.000’den fazla organizasyon tarafından kullanılır hale geldi [3].

Bu büyük güncellemenin en çok talep edilen özelliği şüphesiz DAG sürümleme (DAG Versioning) oldu. Airflow topluluğunun yıllık anketlerinde sürekli birinci sırada yer alan bu özellik, artık Airflow 3.0 ile hayata geçti [4].

DAG Sürümleme Neden Bu Kadar Önemli?

Airflow 2.x’te karşılaştığımız iki temel kısıtlama vardı:

Geçmiş sürüm görünürlüğü yoktu: Bir DAG’ı değiştirip bir görevi (task) sildiğinizde, o görevin tüm geçmişi sanki hiç var olmamış gibi kayboluyordu. Kullanıcı arayüzünde geçmiş çalıştırmaları incelerken ne olduğunu anlamak neredeyse imkansız hale geliyordu [5].

Kod tutarsızlıkları yaşanıyordu: Bir DAG çalışırken kodda değişiklik yapıldığında, farklı görevler farklı kod sürümleriyle çalışabiliyordu. Bu “yürütme kayması” (Execution Drift) olarak adlandırılan durum, hata ayıklamayı kabusa çeviriyordu [6].

Airflow 3.0 bu sorunları kökten çözüyor. Her DAG çalıştırması artık belirli bir kod anlık görüntüsüne (snapshot) bağlı ve sürümler Airflow kullanıcı arayüzünde saklanıyor. Böylece bir DAG çalışmaya başladığında, çalışma ortasında yeni bir sürüm yüklense bile, o çalıştırma başlangıçtaki sürümle tamamlanıyor [7].

DAG Paketleri (DAG Bundles) Kavramını Anlayalım

DAG sürümlemesini tam anlamıyla kavramak için önce DAG Paketleri kavramını anlamamız gerekiyor.

DAG Paketi, DAG kodunu ve destekleyici dosyaları içeren bir koleksiyondur. Bu paketler, DAG kodunu depolamak için kullandıkları arka uca (backend) göre adlandırılır [8]:

  • LocalDagBundle (Yerel DAG Paketi): Yerel dosya sistemini kullanır ve varsayılan seçenektir. Sürümleme desteklemez.
  • GitDagBundle (Git DAG Paketi): Git deposunu kullanır ve tam sürümleme desteği sunar.
  • S3DagBundle (S3 DAG Paketi): Amazon S3 paketini kullanır, ancak sürümleme desteklemez [9].

Sürümlü ve Sürümsüz Paketler Arasındaki Farklar

Peki sürümlü ve sürümsüz paketler arasındaki fark nedir? İşte kritik noktalar:

Başarısız görevleri yeniden çalıştırırken:

  • Sürümsüz paket: Airflow mevcut (en son) DAG kodunu kullanır
  • Sürümlü paket: Airflow varsayılan olarak orijinal DAG çalıştırması sırasındaki kod sürümünü kullanır [10]

Bir DAG çalıştırmasını temizlerken (clearing):

  • Sürümsüz paket: Görevler en son DAG sürümüyle yeniden çalışır
  • Sürümlü paket: Görevler orijinal çalıştırma zamanındaki DAG paketi sürümündeki kodla yeniden çalışır [11]

Bu davranışı değiştirmek isterseniz, temizleme formunda “En son paket sürümüyle çalıştır” (Run with latest bundle version) seçeneğini işaretleyebilir veya API çağrısında run_on_latest_version parametresini True olarak ayarlayabilirsiniz [12].

GitDagBundle Kurulumu: Üç Temel Bileşen

Şimdi GitDagBundle kurulumunu birlikte yapalım. Üç temel bileşene ihtiyacımız var: Sağlayıcı (Provider), Bağlantı (Connection) ve Yapılandırma (Configuration).

Bileşen 1: Sağlayıcı Kurulumu (Provider Installation)

İyi haber! Airflow 3.X (3.1.3 sürümünde test edildi) apache-airflow-providers-git paketi ve git temel Docker imajında hazır olarak geliyor! Yani ekstra bir kurulum yapmanıza gerek yok [13][14][15].

Ayrıca Airflow 3.0.2 öncesi sürümlerde git paketi için Dockerfile‘ınıza şu satırları eklemeniz gerekiyor:

Bileşen 2: Bağlantı Tanımlama (Connection Definition)

GitDagBundle’ın GitHub’a erişebilmesi için bir Airflow bağlantısı tanımlamamız gerekiyor. Bunu iki yöntemle yapabiliriz: Airflow UI üzerinden veya ortam değişkeni ile.

Yöntem 1: Airflow UI Üzerinden (Önerilen)

Airflow 3.1.3’te bağlantı oluşturmak için şu adımları izleyeceğiz:

  1. Airflow web arayüzünde Admin → Connections menüsüne gidin
  2. + (Add) butonuna tıklayın
  3. Açılan formda şu alanları doldurun:
AlanDeğerAçıklama
Connection IDgithub_connBağlantıya vereceğiniz benzersiz kimlik
Connection TypeGITAçılır listeden GIT seçin
Repository URLhttps://github.com/<kullanici>/<repo>.gitGitHub deposunun tam URL’si
Username or Access Token name<github_kullanici_adiniz>GitHub kullanıcı adınız
Access Token (optional)<kisisel_erisim_belirteciniz>GitHub PAT belirteciniz
  1. Save butonuna tıklayarak bağlantıyı kaydedin

Bu yöntem, bağlantı bilgilerini güvenli bir şekilde Airflow meta veri tabanında saklar ve UI üzerinden kolayca yönetmenizi sağlar [16][17].

Yöntem 2: Ortam Değişkeni ile

Alternatif olarak, bağlantıyı ortam değişkeni olarak .env dosyasında da tanımlayabilirsiniz. AIRFLOW_CONN_ ile başlayan ortam değişkenleri, Airflow bağlantılarını tanımlamak için kullanılabilir [17].

AIRFLOW_CONN_GITHUB_CONN='{
  "conn_type": "git",
  "host": "https://github.com/<kullanici>/<repo>.git",
  "login": "<github_kullanici_adiniz>",
  "password": "<token>"
}'

Not: Ortam değişkeni adındaki GITHUB_CONN kısmı, Connection ID olarak kullanılacaktır (küçük harfe dönüştürülür: github_conn).

Bileşen 3: GitHub Kişisel Erişim Belirteci (Personal Access Token) Oluşturma

GitHub kişisel erişim belirteci (PAT) oluşturmak için şu adımları izleyeceğiz:

  1. GitHub hesabınıza giriş yapın
  2. Sağ üst köşedeki profil fotoğrafınıza tıklayın ve Settings (Ayarlar) seçeneğini seçin
  3. Sol menüden Developer settings (Geliştirici ayarları) seçeneğine tıklayın
  4. Personal access tokens (Kişisel erişim belirteçleri) altında Tokens (classic) veya Fine-grained tokens (İnce taneli belirteçler) seçeneğini seçin
  5. Generate new token (Yeni belirteç oluştur) düğmesine tıklayın [19]

Belirtecinizi oluştururken repo kapsamını (scope) seçmeyi unutmayın. Bu kapsam, depo içeriğine okuma ve yazma erişimi sağlar. Kapsam atanmamış bir belirteç yalnızca herkese açık bilgilere erişebilir [20].

Önemli uyarı: Belirteciniz oluşturulduktan sonra yalnızca bir kez gösterilir. Güvenli bir yerde saklamayı unutmayın! GitHub, bir yıl boyunca kullanılmayan kişisel erişim belirteçlerini güvenlik önlemi olarak otomatik olarak kaldırır [21].

Klasik ve İnce Ayarlı Belirteçler (Token) Arasındaki Fark

GitHub iki tür kişisel erişim belirteci sunar:

Klasik belirteçler (Tokens classic): Geniş kapsamlı izinler verir ve erişiminiz olan tüm depolara ve organizasyonlara erişim sağlar [22].

İnce ayarlı belirteçler (Fine-grained tokens): 50’den fazla ayrıntılı izin sunar. Her izin “erişim yok”, “okuma” veya “okuma ve yazma” temelinde verilebilir. Tek bir kullanıcı veya organizasyona ve hatta tek bir depoya erişim sınırlandırılabilir. Bu, güvenlik açısından çok daha iyi kontrol sağlar [23].

Bileşen 4: DAG Paketi Yapılandırması (DAG Bundle Configuration)

Son olarak, Airflow yapılandırmasında DAG paket listesini güncellememiz gerekiyor. Bu yapılandırma [dag_processor].dag_bundle_config_list ayarında tanımlanır [24].

.env dosyanıza şu yapılandırmayı ekleyin:

AIRFLOW__DAG_PROCESSOR__DAG_BUNDLE_CONFIG_LIST='[
  {
    "name": "sizin-paket-adiniz",
    "classpath": "airflow.providers.git.bundles.git.GitDagBundle",
    "kwargs": {
      "git_conn_id": "github_conn",
      "subdir": "dags",
      "tracking_ref": "main"
    }
  }
]'

Bu yapılandırmadaki parametreleri inceleyelim:

  • name: Paketinize vereceğiniz benzersiz ad
  • classpath: GitDagBundle sınıfının tam yolu
  • git_conn_id: Daha önce tanımladığımız bağlantı kimliği (github_conn)
  • subdir: DAG dosyalarının bulunduğu alt dizin
  • tracking_ref: Takip edilecek dal (branch) veya etiket (tag) [25]

Ek olarak şu parametreleri de kullanabilirsiniz:

  • repo_url: Bağlantının ana bilgisayar adresini geçersiz kılmak için açık Git deposu URL’si (isteğe bağlı)
  • prune_dotgit_folder: Klonlamadan sonra .git klasörünü kaldırır, disk alanı tasarrufu sağlar (varsayılan: True) [26]

GitDagBundle’ın Teknik Detaylarına Bakalım

GitDagBundle, her seferinde depoyu yeniden klonlamak yerine akıllı bir yaklaşım benimser. Kaynak depodan çıplak bir depo (bare repo) olarak tek seferlik bir klonlama yapar, ardından her sürüm için oradan yerel klonlar oluşturur [27].

Bu yaklaşımın avantajları şunlar:

  • Disk alanı tasarrufu
  • Daha hızlı sürüm geçişleri
  • Git’in --local özelliğini kullanarak nesne dizinini sabit bağlantılarla (hard links) paylaşma

Sürüm Oluşturma Mekanizması

GitDagBundle’da yeni bir sürüm, yapılandırılan Git deposuna yapılan her commit ile oluşturulur. DAG kodunuz değişmese bile, bir commit yeni bir paket sürümü yaratır [28].

Bu, LocalDagBundle’dan farklıdır. LocalDagBundle varsayılan olarak sürümsüzdür, yani görevler her zaman en son kod kullanılarak çalışır [29].

DAG Sürümü ve Paket Sürümü Arasındaki Fark

Burada önemli bir ayrım yapmamız gerekiyor:

DAG Sürümü (DAG Version): DAG’da yapısal bir değişiklik olduğunda (görev ekleme, silme, parametre değiştirme vb.) otomatik olarak oluşturulur. Bu, hangi DAG paketi kullanılırsa kullanılsın gerçekleşir [30].

Paket Sürümü (Bundle Version): Altta yatan deponun sürümüdür. GitDagBundle için her Git commit’i yeni bir paket sürümü oluşturur. Yapısal bir değişiklik olmasa bile yeni sürüm oluşur [31].

Yapısal değişiklik, serileştirilmiş DAG’ı (serdag) etkileyen herhangi bir değişikliktir: DAG veya görev parametreleri, görev bağımlılıkları, görev kimlikleri (task ID) veya görev ekleme/silme işlemleri [32].

Birden Fazla DAG Paketi Kullanma

Airflow, tek bir dağıtımda birden fazla DAG paketi tanımlamanıza izin verir. Bu, DAG’larınızı daha iyi organize etmenizi sağlar [33].

Örneğin, hem Git tabanlı hem de yerel paketleri birlikte kullanabilirsiniz:

[dag_processor]
dag_bundle_config_list = [
  {
    "name": "my_git_repo",
    "classpath": "airflow.providers.git.bundles.git.GitDagBundle",
    "kwargs": {"tracking_ref": "main", "git_conn_id": "my_git_conn"}
  },
  {
    "name": "dags-folder",
    "classpath": "airflow.dag_processing.bundles.local.LocalDagBundle",
    "kwargs": {}
  }
]

Bu yapılandırma ile farklı kaynaklardan gelen DAG’ları tek bir Airflow ortamında yönetebilirsiniz [34].

Sürümlemenin Faydaları: Gerçek Dünya Senaryoları

GitDagBundle kullanmaya başladığınızda, LocalDagBundle’dan çok farklı davranışlar göreceksiniz. İşte temel fark:

LocalDagBundle ile önceki bir çalıştırmayı yeniden çalıştırdığınızda, en son kod versiyonu kullanılır. Ancak GitDagBundle ile önceki bir çalıştırmayı yeniden çalıştırdığınızda, orijinal çalıştırma zamanındaki kod versiyonu kullanılır [35].

Bu davranış, özellikle şu senaryolarda kritik önem taşır:

Geri Doldurma (Backfill) İşlemleri

Geçmiş tarihler için DAG çalıştırmaları oluştururken, her çalıştırma o tarihteki kod sürümüyle çalışır. Airflow 3.0’da geri doldurma işlemleri artık zamanlayıcı (scheduler) tarafından yönetiliyor. Eskiden CLI üzerinden yapılan ve “ikinci sınıf vatandaş” muamelesi gören bu işlem, artık çok daha entegre bir deneyim sunuyor [36].

Hata Ayıklama ve Sorun Giderme

Bir görev başarısız olduğunda, tam olarak hangi kodun çalıştığını görebilirsiniz. Airflow kullanıcı arayüzünde her DAG çalıştırması, ilgili DAG sürümüyle birlikte görüntülenir. Bu, hata ayıklamayı büyük ölçüde kolaylaştırır ve geçmiş çalıştırmalarda ne olduğunu anlamanızı sağlar [37].

Uyumluluk ve Denetim

Özellikle düzenlemeye tabi sektörlerde (finans, sağlık, devlet kurumları vb.), kod değişikliklerinin izlenmesi ve belgelenmesi zorunludur. DAG sürümleme, uyumluluk gereksinimlerini karşılamanıza yardımcı olur ve “hangi kod ne zaman çalıştı” sorusuna her zaman yanıt verebilmenizi sağlar [38].

Ekip Çalışması İçin Güçlü Bir Araç

Bir ekibin parçası olduğunuzda veya bir gün bir veri mühendisleri ekibine liderlik ettiğinizde, DAG değişikliklerini doğrudan Airflow kullanıcı arayüzünde izleyebilmek son derece değerli olacak.

CI/CD iş akışları artık commit karma değerlerini (commit hashes) doğrudan Airflow DAG sürümleriyle entegre edebilir:

  • Her kod değişikliği veya dağıtımda otomatik DAG sürümleme
  • Geçmiş DAG çalıştırmaları kendi özel sürümleriyle korunur
  • Kullanıcı arayüzü belirli DAG sürümlerini seçip yeniden çalıştırmanıza izin verir [39]

Dikkat Edilmesi Gereken Noktalar

GitDagBundle kullanırken bazı noktalara dikkat etmeniz gerekiyor:

Çalışan DAG’larda Değişiklik

Sürümleme açıkken bile dikkatli olmalısınız. Çalışmakta olan kritik bir DAG’ı değiştirirseniz sorunlar yaşayabilirsiniz. En iyi uygulama, kritik DAG’ları güncelleme sırasında duraklatmaktır [40].

Yenileme Aralığı (Refresh Interval)

DAG işlemcisi, Git deposundaki değişiklikleri belirli aralıklarla kontrol eder. Bu aralığı refresh_interval parametresi ile saniye cinsinden ayarlayabilirsiniz. Bu parametre, DAG paketi yapılandırmasındaki kwargs içinde tanımlanır [41]:

AIRFLOW__DAG_PROCESSOR__DAG_BUNDLE_CONFIG_LIST='[
  {
    "name": "sizin-paket-adiniz",
    "classpath": "airflow.providers.git.bundles.git.GitDagBundle",
    "kwargs": {
      "git_conn_id": "github_conn",
      "subdir": "dags",
      "tracking_ref": "main",
      "refresh_interval": 300
    }
  }
]'

Yukarıdaki örnekte refresh_interval: 300 değeri, Airflow’un her 5 dakikada bir (300 saniye) Git deposunu kontrol edeceği anlamına gelir. Değeri düşürürseniz değişiklikler daha hızlı algılanır, ancak Git sunucusuna daha sık istek gider.

Harici Görüntüleme URL’si

GitDagBundle, depodaki DAG’ları harici bir web sitesinde görüntülemek için bir URL şablonu sağlar. Bu, Airflow kullanıcı arayüzünde kullanıcılara gösterilir ve o paket sürümü hakkında daha fazla ayrıntı için bu URL’ye gitmelerini sağlar [42].

Sonuç: Geleceğe Hazır Olun

GitDagBundle, Apache Airflow’un evriminde önemli bir adımı temsil ediyor. Artık DAG’larımızı profesyonel yazılım geliştirme pratikleriyle yönetebiliyoruz:

  1. Sürüm kontrolü: Her değişiklik izleniyor ve geri alınabiliyor
  2. Ekip işbirliği: Birden fazla mühendis aynı DAG’lar üzerinde güvenle çalışabiliyor
  3. İzlenebilirlik: Her çalıştırma hangi kodla yapıldı, net bir şekilde görülüyor
  4. Tekrarlanabilirlik: Geçmiş çalıştırmalar orijinal kodlarıyla yeniden çalıştırılabiliyor

Airflow 3.0, veri düzenleme (data orchestration) için AI çağını yeniden tanımlıyor. Daha kolay kullanım, daha güçlü güvenlik ve görevleri her yerde, her zaman çalıştırabilme yeteneği sunuyor [43].

Eğer henüz Airflow 3.0’a geçmediyseniz, şimdi tam zamanı! GitDagBundle ile DAG’larınızı GitHub’a taşıyın ve ekip çalışmasının keyfini çıkarın.

Sorularınız varsa yorumlarda buluşalım. Bir sonraki yazıda görüşmek üzere!


Kaynaklar

[1] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[2] Apache Software Foundation. “Apache Airflow 3 is Generally Available!” Apache Airflow Blog, April 22, 2025. https://airflow.apache.org/blog/airflow-three-point-oh-is-here/

[3] Apache Software Foundation. “Apache Airflow 3 is Generally Available!” Apache Airflow Blog, April 22, 2025. https://airflow.apache.org/blog/airflow-three-point-oh-is-here/

[4] Astronomer. “Introducing Apache Airflow 3: the most significant release in Airflow’s history.” April 22, 2025. https://www.astronomer.io/airflow/3/intro/

[5] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[6] Druzhynin, V. “Apache Airflow 3.0: What’s New and Is It Worth Upgrading?” Medium, June 25, 2025. https://medium.com/@valentin.druzhinin/apache-airflow-3-0-whats-new-and-is-it-worth-upgrading-71d940f841d8

[7] Apache Software Foundation. “Apache Airflow 3 is Generally Available!” Apache Airflow Blog, April 22, 2025. https://airflow.apache.org/blog/airflow-three-point-oh-is-here/

[8] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[9] Apache Software Foundation. “Dag Bundles.” Airflow Documentation. https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/dag-bundles.html

[10] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[11] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[12] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[13] Apache Software Foundation. “apache-airflow-providers-git.” Airflow Providers Documentation. https://airflow.apache.org/docs/apache-airflow-providers-git/stable/index.html

[14] Apache Software Foundation. “apache-airflow-providers-git.” Airflow Providers Documentation. https://airflow.apache.org/docs/apache-airflow-providers-git/stable/index.html

[15] Apache Software Foundation. “Dag Bundles.” Airflow Documentation. https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/dag-bundles.html

[16] Apache Software Foundation. “GIT Connection.” Airflow Providers Git Documentation. https://airflow.apache.org/docs/apache-airflow-providers-git/stable/connections/git.html

[17] Astronomer. “Connections.” Astronomer Learn. https://www.astronomer.io/docs/learn/connections

[18] Apache Software Foundation. “GIT Connection.” Airflow Providers Git Documentation. https://airflow.apache.org/docs/apache-airflow-providers-git/stable/connections/git.html

[19] GitHub. “Managing your personal access tokens.” GitHub Docs. https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens

[20] GitHub. “Managing your personal access tokens.” GitHub Docs. https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens

[21] GitHub. “Managing your personal access tokens.” GitHub Docs. https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens

[22] GitHub. “Managing your personal access tokens.” GitHub Docs. https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens

[23] GitHub. “Introducing fine-grained personal access tokens for GitHub.” GitHub Blog, October 20, 2022. https://github.blog/security/application-security/introducing-fine-grained-personal-access-tokens-for-github/

[24] Apache Software Foundation. “Dag Bundles.” Airflow Documentation. https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/dag-bundles.html

[25] Apache Software Foundation. “airflow.providers.git.bundles.git.” Airflow Providers Git Documentation. https://airflow.apache.org/docs/apache-airflow-providers-git/stable/_api/airflow/providers/git/bundles/git/index.html

[26] Apache Software Foundation. “airflow.providers.git.bundles.git.” Airflow Providers Git Documentation. https://airflow.apache.org/docs/apache-airflow-providers-git/stable/_api/airflow/providers/git/bundles/git/index.html

[27] Apache Software Foundation. “airflow.providers.git.bundles.git.” Airflow Providers Git Documentation. https://airflow.apache.org/docs/apache-airflow-providers-git/stable/_api/airflow/providers/git/bundles/git/index.html

[28] Astronomer. “Dag versioning.” Astronomer Docs. https://www.astronomer.io/docs/astro/dag-versioning

[29] Astronomer. “Dag versioning.” Astronomer Docs. https://www.astronomer.io/docs/astro/dag-versioning

[30] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[31] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[32] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[33] Apache Software Foundation. “Dag Bundles.” Airflow Documentation. https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/dag-bundles.html

[34] Apache Software Foundation. “Dag Bundles.” Airflow Documentation. https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/dag-bundles.html

[35] Astronomer. “DAG Versioning and DAG Bundles.” Astronomer Docs. https://www.astronomer.io/docs/learn/airflow-dag-versioning

[36] Apache Software Foundation. “Apache Airflow 3 is Generally Available!” Apache Airflow Blog, April 22, 2025. https://airflow.apache.org/blog/airflow-three-point-oh-is-here/

[37] Cloudflight. “Apache Airflow 3.0: Key New Features.” Engineering Blog, August 12, 2025. https://engineering.cloudflight.io/a-fresh-breath-of-air-whats-new-in-apache-airflow-30

[38] Astronomer. “Introducing Apache Airflow 3: the most significant release in Airflow’s history.” April 22, 2025. https://www.astronomer.io/airflow/3/intro/

[39] Druzhynin, V. “Apache Airflow 3.0: What’s New and Is It Worth Upgrading?” Medium, June 25, 2025. https://medium.com/@valentin.druzhinin/apache-airflow-3-0-whats-new-and-is-it-worth-upgrading-71d940f841d8

[40] onprema. “Airflow: DAG Versioning and Bundles.” https://onprema.com/airflow-dag-versioning-and-bundles/

[41] Apache Software Foundation. “Dag Bundles.” Airflow Documentation. https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/dag-bundles.html

[42] Apache Software Foundation. “airflow.providers.git.bundles.git.” Airflow Providers Git Documentation. https://airflow.apache.org/docs/apache-airflow-providers-git/stable/_api/airflow/providers/git/bundles/git/index.html

[43] Astronomer. “Introducing Apache Airflow 3: the most significant release in Airflow’s history.” April 22, 2025. https://www.astronomer.io/airflow/3/intro/

Kapak: Photo by Rubaitul Azad on Unsplash

0

Bir yanıt yazın

Password Requirements:

  • At least 8 characters
  • At least 1 lowercase letter
  • At least 1 uppercase letter
  • At least 1 numerical number
  • At least 1 special character