GitHub Copilot modernleştirme aracısı ile toplu yükseltme

Toplu yükseltme, aynı anda birden çok depoya tutarlı modernleştirme planları uygulamanızı sağlar. Bu makalede, kurumsal ölçekte birden çok uygulamayı verimli bir şekilde yükseltme işlemi gösterilmektedir.

Toplu yükseltmeyi kullanarak şunları yapabilirsiniz:

  • Aynı yükseltme hedefini kullanarak birden çok uygulamayı aynı anda yükseltin.
  • Uygulamalar arasında benzer yükseltme desenleri kullanarak tutarlılığı sağlayın.
  • Bulut Kodlama Aracıları'na görev devri yaparken paralel yürütmeden yararlanın.

Toplu yükseltme aşağıdaki avantajları sağlar:

  • Tutarlı yürütme:

    • Standartlaştırılmış yaklaşım: Tüm depolara aynı modernleştirme desenlerini uygulayın.
    • Azaltılmış değişkenlik: Benzer uygulamalar için tutarlı yükseltme yollarından emin olun.
    • Yeniden kullanılabilir stratejiler: Uygulamalar arasında kuruluşa özgü becerileri kullanın.
  • Ölçek ve verimlilik:

    • Paralel işleme: Birden çok depoları aynı anda işlemek için Bulut Kodlama Aracılarını kullanın.
    • Otomatik iş akışları: Zamanlanmış modernleştirme için CI/CD işlem hatlarıyla tümleştirme.
    • Zaman tasarrufu: Toplam modernizasyon süresini haftalardan saatlere düşürün.

Önkoşullar

  • CLI'i modernleştirin.
  • Tamamlanmış bir toplu iş değerlendirmesi (önerilir ancak gerekli değildir).
  • Tüm depolar aynı programlama dilini (Java veya .NET) kullanır.
  • Yükseltmek istediğiniz tüm depolara erişim.
  • GitHub kimlik doğrulaması yapılandırıldı (gh auth login).

Önemli

Toplu yükseltmedeki tüm depolar aynı programlama dilini kullanmalıdır. Depo farklı bir dil kullanıyorsa toplu yükseltme, depoyu başarısız olarak işaretler ve atlar.

Depoları yapılandırma

Modernleştirme aracısı, yükseltmek istediğiniz depoları belirtmek için birden çok yolu destekler:

  • Geçerli klasör: Projeyi geçerli çalışma dizininizde yükseltin.
  • El ile giriş: Yerel dizin yollarını veya uzak Git URL'lerini doğrudan girin.
  • Depo yapılandırma dosyası: Tüm depoları listeleyen bir JSON yapılandırma dosyası kullanın.

Depo yapılandırma dosyası

Birçok depoda toplu işlemler için, tüm depoları listelemek için bir JSON yapılandırma dosyası oluşturun. Örneğin, çalışma dizininizde .github/modernize/repos.json konumunda oluşturun veya özel bir yol sağlayın.

Bahşiş

Örnek depolar için, önce bunları fork edin ve işi Bulut Kod Ajanları'na devretmek için yönetici iznine sahip olduğunuzdan emin olun.

Basit biçim (depo dizisi):

[
  {
    "name": "PhotoAlbum-Java",
    "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
  },
  {
    "name": "ZavaSocialFrontEnd",
    "url": "https://github.com/Azure-Samples/ZavaSocialFrontEnd"
  }
]

Tam biçim (dal ve yerel yollarla):

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "local-project",
      "path": "/absolute/path/to/project"
    }
  ]
}

Her depo girişi aşağıdaki alanları destekler:

Alan Açıklama Zorunlu
name Depo için kolay bir ad (raporlarda ve panolarda kullanılır). Evet
url HTTPS veya SSH biçiminde Git kopyası URL'si. url veya path'den biri
path Mutlak yerel dizin yolu. Ya url ya da path birisi
branch Kopyalamadan sonra geçilecek dal. Hayır
description İnsan tarafından okunabilen bir açıklama. Hayır

Bahşiş

Farklı kuruluşlardan depolar ekleyebilir ve erişiminiz olduğu sürece farklı kimlik doğrulama yöntemleri kullanabilirsiniz.

Modernleştirme aracısı, etkileşimli modda bir yapılandırma dosyasından seçtiğinizde repos.json dosyasını .github/modernize/repos.json otomatik olarak algılar. Özel bir yol da sağlayabilirsiniz.

Yürütme modunuzu seçin

Toplu yükseltme iki yürütme modunu ve iki etkileşim yöntemini destekler:

Yürütme modları

Yerel yürütme

  • En iyi yöntem: Test, daha küçük depo kümeleri (1-5 depo) veya yerel denetimi tercih ettiğinizde.
  • Nasıl çalışır: Depoları yerel makinenizde sıralı olarak işler.
  • Kurulum gerekli: Temel önkoşulların ötesinde bir şey gerekmemektedir.
  • Destekler: Hem Git URL'si hem de yerel yol depoları.

Bulut Kodlama Aracısı yetkilendirmesi

  • En iyi yöntem: Kurumsal ölçekli işlemler, büyük portföyler (5+ depo) veya paralel işleme.
  • Nasıl çalışır: Bulutta paralel yürütme için görevleri GitHub Bulut Kodlama Aracılarına gönderir.
  • Kurulum gerekli: Her depoda (kurulum sırasında yapılandırılan) MCP sunucu yapılandırması.
  • Destekler: Yalnızca GitHub (github.com) URL'leri olan depolar. Yerel yollar ve GitHub olmayan sağlayıcılar desteklenmez.

Önemli

Bulut Kodlama Agent delegasyonu, depoların GitHub (github.com) depo URL'lerine sahip olmasını gerektirir. Yerel yollarla belirtilen veya GitHub olmayan sağlayıcılarda (GitLab, Azure DevOps) barındırılan depolar, bulut devretme işlemi sırasında atlanır. Bu depolar için yerel yürütmeyi kullanın.

Bahşiş

Bulut Kodlama Aracısı temsilcisi, depoları paralel olarak işleyerek toplam modernizasyon süresini saatlerden dakikalara düşürebilir.

Etkileşim yöntemleri

Etkileşimli mod (TUI)

  • Menüler ve istemlerle ilgili kılavuzlu deneyim.
  • İlk kez kullananlar veya seçenekleri gözden geçirmek istediğinizde en iyi seçenek.
  • Hem yerel hem de bulut yürütmeyi destekler.

Etkileşimli olmayan mod (CLI/başsız)

  • Komut satırı tabanlı, tam otomatik.
  • CI/CD işlem hatları ve otomasyon için en iyi yöntemdir.
  • Bayrağıyla --delegate cloud hem yerel hem de bulut yürütmeyi destekler.

Uyarı

Herhangi bir yürütme modunu herhangi bir etkileşim yöntemiyle birleştirebilirsiniz. Örneğin:

  • modernize Yükselt'i (etkileşimli, yerel) → seçin
  • modernize → Yükselt → Bulut Aracılarına Temsilci (etkileşimli, bulut) seçeneğini belirleyin
  • modernize upgrade "Java 21" --source ./repos.json (etkileşimli olmayan, yerel)
  • modernize upgrade "Java 21" --source ./repos.json --delegate cloud (etkileşimli olmayan, bulut)

Toplu yükseltme nasıl çalışır?

Toplu yükseltme iş akışı:

  1. Language algılama: proje dilini (Java veya .NET) ilk depodan otomatik olarak algılar.
  2. Plan oluşturma: İsteminize göre bir yükseltme planı oluşturur veya en son LTS sürümlerini kullanır.
  3. Yürütme: Yükseltmeyi her depoya uygular.
  4. Doğrulama: Her depo için değişiklikleri derler ve doğrular.

Toplu yükseltmeyi çalıştırma

Depolarınızı yapılandırdıktan ve yürütme modunu seçtikten sonra toplu yükseltmeyi başlatın.

Etkileşimli mod (yerel olarak yükseltme)

  1. Modernleştirme aracısını çalıştırın:

    modernize
    
  2. Ana menüden Yükselt'i seçin.

    Terminalde Yükselt seçeneğini içeren ana menüyü gösteren CLI'yi modernleştirin ekran görüntüsü.

  3. Hedef depolarınızı nasıl belirleyeceğinizi seçin. Dosya kullanmak için Yapılandırma dosyasından'ırepos.json seçin.

    Terminaldeki kaynak türü seçimini gösteren CLI'yi modernleştirin ekran görüntüsü.

    Bahşiş

    Yerel yolları veya uzak Git URL'lerini doğrudan girmek için El ile giriş'i veya projeyi geçerli dizininize yükseltmek için Geçerli klasör'ü de seçebilirsiniz.

  4. repos.json Dosya varsayılan konumda algılanırsa aracı dosyayı otomatik olarak doldurur. Aksi takdirde, yapılandırma dosyanızın yolunu girin ve Enter tuşuna basın.

  5. Tüm depolar varsayılan olarak seçilidir. Atlamak istediğiniz depoların seçimini kaldırın ve seçiminizi onaylamak için Enter tuşuna basın.

    • Gezinmek için ok tuşlarını kullanın ve tek tek depoları açıp kapatmak için Boşluk Tuşu'na basın.

    Terminalde Depo seç listesini gösteren CLI'yi Modernleştir'in ekran görüntüsü.

  6. Yürütme modunu seçin. Yerel olarak yükselt'i seçin.

    Terminalde Yerel olarak yükselt menü seçeneğini gösteren CLI'yi modernleştirin ekran görüntüsü.

  7. Yükseltme hedefi istemini (örneğin, Java 21 veya .NET 10) girin veya varsayılanı (en son LTS sürümü) kabul etmek için Enter tuşuna basın.

  8. Aracı otomatik olarak çalışır:

    • İsteğinize göre bir yükseltme planı oluşturur.
    • Planı her depoya sırayla uygular.
    • Değişikliklerden sonra her bir depo oluşturur ve doğrular.
    • Her deponun ilerleme durumunu ve özetini görüntüler.

    Terminaldeki her depo için yükseltme ilerleme durumunu gösteren CLI'yi modernleştirin ekran görüntüsü.

Etkileşimli mod (Bulut Kodlama Aracılarına temsilci seçme)

Önkoşullar: MCP sunucusunu yapılandırma

Yükseltmeyi çalıştırmadan önce, her depoda GitHub Copilot Modernleştirme MCP Sunucusu'nu yapılandırın.

Java uygulamaları için bu yapılandırmayı depo ayarlarınızın Bulut Kodlama Aracısı bölümüne ekleyin:

{
  "mcpServers": {
    "app-modernization": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "-y",
        "@microsoft/github-copilot-app-modernization-mcp-server"
      ]
    }
  }
}

 MCP yapılandırma bölümünün vurgulandığı depo Kodlama aracısı ayarları bölmesini gösteren GitHub ekran görüntüsü.

Adımlar

  1. Modernleştirme aracısını çalıştırın:

    modernize
    
  2. Ana menüden Yükselt'i seçin.

    Terminalde Yükselt seçeneğini içeren ana menüyü gösteren CLI'yi modernleştirin ekran görüntüsü.

  3. Hedef depolarınızı nasıl belirleyeceğinizi seçin. Yapılandırma dosyasından seçin.

    Terminaldeki kaynak türü seçimini gösteren CLI'yi modernleştirin ekran görüntüsü.

  4. repos.json Dosya varsayılan konumda algılanırsa aracı dosyayı otomatik olarak doldurur. Aksi takdirde, yapılandırma dosyanızın yolunu girin ve Enter tuşuna basın.

  5. Tüm depolar varsayılan olarak seçilidir. Atlamak istediğiniz depoların seçimini kaldırın ve seçiminizi onaylamak için Enter tuşuna basın. Tek tek depolar arasında geçiş yapmak için ok tuşlarını kullanarak gezin ve Space tuşuna basın.

    Terminaldeki depo listesini gösteren CLI'yi modernleştirin ekran görüntüsü.

  6. Yürütme modunu seçin. Bulut Ajanlarına Temsilci Ata seçin.

    Terminalde Bulut Kodlama Aracılarına Temsilci Seç menü seçeneğini gösteren CLI'yi Modernleştirin ekran görüntüsü.

  7. Yükseltme hedefi istemini girin (örneğin, Java 21) veya varsayılanı kabul etmek için Enter tuşuna basın.

  8. Aracı otomatik olarak çalışır:

    • Her depo için yükseltme planları oluşturur.

    • Her bir depo için bir Bulut Kodlama Aracısı işi gönderir.

    • İşleri bulutta bağımsız bir şekilde paralel çalıştırır.

    • Her depo için iş kimliklerini ve PR URL'lerini görüntüler.

      Terminalde Bulut Kodlama Aracılarına yükseltmeleri atama işleminin ilerleme durumunu gösteren CLI'yi Modernleştirin ekran görüntüsü.

    • Görevleri paralel yürütme için AgentHQ'ye devreder.

      GitHub ekran görüntüsü, yükseltme görevlerinin AgentHQ'ye devredildiği Aracılar bölmesini göstermektedir.

    • Tek tek her görevin ilerleme durumunu gerçek zamanlı olarak izler.

       Tek tek Bulut Kodlama Aracısı yükseltme görevleri için ilerleme izleme içeren Aracılar bölmesini gösteren GitHub ekran görüntüsü.

    • Tamamlanan her görev için yükseltme özetini görüntüler.

       Tek tek Bulut Kodlama Aracısı görevlerinin yükseltme özetini içeren Aracılar bölmesini gösteren GitHub ekran görüntüsü.

Etkileşimli olmayan mod (CLI)

Otomasyon ve CI/CD tümleştirmesi için komutunu modernize upgrade kullanın:

Depo yapılandırma dosyasını kullanarak yerel olarak yükseltin:

modernize upgrade "Java 21" --source .github/modernize/repos.json

Kaynakları doğrudan belirterek birden çok depoya yükseltme:

modernize upgrade "Java 21" --source https://github.com/org/repo1 --source https://github.com/org/repo2

Bulut Kodlama Aracılarını kullanarak yükseltme:

modernize upgrade "Java 21" --source .github/modernize/repos.json --delegate cloud

Uyarı

Toplu başlıksız yürütme ve daha fazla CLI seçeneği için, CLI komutları başvurusundaki Çok depolu yapılandırma bölümüne bakın.

Sonuçları gözden geçirme

Toplu yükseltme tamamlandığında:

  1. Terminalde görüntülenen toplu raporu denetleyin.

  2. Tek tek depo değişikliklerini gözden geçirin:

    cd <repository-name>
    git status
    git diff
    
  3. Başarılı yükseltmeler için çekme istekleri oluşturun:

    cd <repository-name>
    gh pr create --title "Upgrade to Java 21" --body "Automated upgrade by modernization agent"
    

Toplu yükseltme sorunlarını giderme

Sık karşılaşılan sorunlar

Depo erişim hataları:

  • gh auth status kullanarak GitHub kimlik doğrulamayı doğrulayın.
  • içindeki repos.jsontüm depolara erişiminiz olduğundan emin olun.

Dil uyuşmazlığı hataları

  • repos.json'daki tüm depoların aynı dili (Java veya .NET) kullandığından emin olun.
  • Farklı diller için ayrı toplu işlemler oluşturun.

Kopyalama hataları:

  • repos.json içindeki depo URL'lerinin doğru ve erişilebilir olduğunu doğrulayın.
  • Tüm depolar için uygun erişim izinlerine sahip olduğunuzdan emin olun.
  • Ağ bağlantısını ve VPN ayarlarını denetleyin.

Yükseltmeden sonra derleme hataları:

  • Toplanan rapordaki derleme hata iletilerini gözden geçirin.
  • Diğer bağımlılıkları güncelleştirmeniz gerekip gerekmediğini denetleyin.
  • Üçüncü taraf kitaplıklarının yeni sürümle uyumluluğunu doğrulayın.

Tek tek depo hataları:

  • Tek tek depolar başarısız olsa bile toplu işlem devam eder.
  • Başarısız depoları belirlemek için toplanan raporu gözden geçirin.
  • Belirli hata iletileri için hata günlüklerini denetleyin.
  • Başarısız depoları ayrı ayrı yeniden deneyin.

Bulut Kodlama Aracısı hataları:

  • GitHub Actions izinlerini ve kota sınırlarını denetleyin.
  • .NET Framework için Windows çalıştırıcı yapılandırmasının düzgün ayarlandığından emin olun.

Sonraki Adımlar

Toplu yükseltmeyi tamamladıktan sonra şunları yapabilirsiniz:

Geliştirmeye devam edin:

Daha fazla bilgi edinin:

Geri bildirimde bulunun

Girdinize değer veririz! Toplu yükseltme veya Modernleştirme aracısı hakkında geri bildiriminiz varsa github-copilot-appmod deposunda bir sorun oluşturun veya GitHub Copilot modernleştirme geri bildirim formunu kullanın.