Aracılığıyla paylaş


CLI'yi Modernleştirme ile CI/CD tümleştirmesi

Uygulama modernleştirmesini büyük ölçekte otomatikleştirmek için CLI'yi CI/CD işlem hatlarınızla tümleştirin. Bu makalede hem GitHub Actions'ı hem de Azure Pipelines'ı cli'yi zamanlamaya göre veya isteğe bağlı olarak çalıştıracak şekilde nasıl yapılandırabileceğiniz gösterilmektedir.

CI/CD işlem hattında Modernize CLI'yi çalıştırmak size şunları sağlar:

  • El ile müdahale olmadan yinelenen bir zamanlamaya göre yükseltmeleri otomatikleştirin.
  • Kuruluşunuz genelinde modernleştirme iş akışlarını standartlaştırın.
  • Ayrılmış dallar ve derleme yapıtları aracılığıyla değişiklikleri izleyin.
  • Pull request'lar, derleme özetleri ve loglar aracılığıyla sonuçları gözden geçirin.

Bu makaledeki örnek işlem hatları aşağıdaki adımları gerçekleştirir:

  1. En son Modernleştirme CLI'sını indirin ve yükleyin.
  2. Yapılandırılabilir bir hedefle (örneğin, modernize upgrade) çalıştırınJava 21.
  3. Elde edilen değişiklikleri kaydedin ve bir özel dala gönderin.
  4. Bir sonuç özeti yayımlayın ve CLI günlüklerini derleme yapıtları olarak karşıya yükleyin.

Önkoşullar

İşlem hattını yapılandırma

Deponuzda aşağıdaki içeriğe sahip bir iş akışı dosyası .github/workflows/modernize.yml oluşturun:

name: Modernization CLI

on:
  workflow_dispatch:
    inputs:
      upgrade_target:
        description: 'Upgrade target (e.g., Java 21)'
        required: false
        default: 'latest'
  schedule:
    # Run during off-peak hours: 2 AM UTC daily
    - cron: '0 2 * * *'

permissions:
    id-token: write
    contents: write
    actions: read

jobs:
  modernization:
    runs-on: ubuntu-latest
    env:
      GH_TOKEN: ${{ secrets.GH_TOKEN }}

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Download Modernize CLI
        run: |
          curl -fsSL https://raw.githubusercontent.com/microsoft/modernize-cli/main/scripts/install.sh | sh

      - name: Run Modernize CLI to upgrade code
        run: |
          TARGET="${{ github.event.inputs.upgrade_target }}"
          if [ -z "$TARGET" ] || [ "$TARGET" = "latest" ]; then
            modernize upgrade --no-tty
          else
            modernize upgrade "$TARGET" --no-tty
          fi

      - name: Push changes to result branch
        id: push_changes
        run: |
          BRANCH_NAME="modernize-upgrade-${{ github.event.inputs.upgrade_target || 'latest' }}-$(date +%Y%m%d-%H%M%S)"

          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"

          git add -A
          git reset .github/workflows
          git diff --cached --quiet || git commit -m "chore: apply Modernize CLI changes [skip ci]"
          git checkout -B "$BRANCH_NAME"
          git push origin "$BRANCH_NAME"

          echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_OUTPUT

      - name: Display results summary
        if: success()
        run: |
          cat >> $GITHUB_STEP_SUMMARY <<EOF
          ## Modernization Complete

          ### Branch Information
          - **Result Branch**: \`${{ steps.push_changes.outputs.BRANCH_NAME }}\`
          - **Target**: ${{ github.event.inputs.upgrade_target || 'latest' }}

          ### Links
          - [View Branch](https://github.com/${{ github.repository }}/tree/${{ steps.push_changes.outputs.BRANCH_NAME }})
          - [Create PR](https://github.com/${{ github.repository }}/compare/main...${{ steps.push_changes.outputs.BRANCH_NAME }})
          EOF

      - name: Upload Modernize CLI logs
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: modernize-logs
          path: ~/.modernize/logs/
          if-no-files-found: warn

İş akışı ayrıntıları

İş akışı iki tetikleyici içerir:

  • El ile gönderme (workflow_dispatch): eylemler sekmesinden iş akışını isteğe bağlı olarak çalıştırın. İsteğe bağlı olarak gibi Java 21bir yükseltme hedefi belirtin.
  • Zamanlandı (schedule): Her gün 02:00'da (UTC) otomatik olarak çalıştırılır. Cron ifadesini tercih ettiğiniz zamanlamayla eşleşecek şekilde ayarlayın.

Her çalıştırma aşağıdaki adımları gerçekleştirir:

  1. Depo kodunu kontrol eder.
  2. En son Modernleştirme CLI'sini indirip yükler.
  3. modernize upgrade belirlenen hedefle veya varsayılan olarak latest ile çalışır.
  4. Değişiklikleri işler ve bunları zaman damgalı bir dala iletir.
  5. GitHub Actions adım özetine dal ve çekme isteği bağlantıları ekleyerek bir özet yazar.
  6. CLI günlüklerini modernize ederek sorun giderme için bir yapı eseri olarak yükler.

Uyarı

İş akışı dosyasının yanlışlıkla değiştirilmesini önlemek için iş akışı işlemeden önce sıfırlanır .github/workflows .

İşlem hattını çalıştırma

İş akışını el ile tetikleme:

  1. GitHub'daki deponuza gidin.
  2. Eylemler sekmesini seçin.
  3. İş akışı listesinden Modernleştirme CLI'sini seçin.
  4. İş akışını çalıştır seçeneğini belirleyin.
  5. İsteğe bağlı olarak bir yükseltme hedefi girin ve onaylamak için İş akışını çalıştır'ı seçin.

İş akışı tamamlandıktan sonra, sonuç dalına yönelik bağlantılar için adım özetini gözden geçirin ve değişiklikleri birleştirmek için bir pull isteği oluşturun.

Sorun giderme

Sık karşılaşılan sorunlar

Kimlik doğrulama hataları:

  • Gizli dizi veya değişkenin GH_TOKEN geçerli bir GitHub Kişisel Erişim Belirteci ile doğru ayarlandığını doğrulayın.
  • Belirtecin GitHub Copilot erişimi için gerekli kapsamlara sahip olduğundan emin olun.

Hiçbir değişiklik algılanmadı:

  • Modernleştirme CLI'sı, belirtilen hedef için hiçbir değişiklik gerekmediğini belirleyebilir.
  • Değerlendirmeyle ilgili ayrıntılar için karşıya yüklenen log dosyasını gözden geçirin.

Anında iletme hataları (Azure Pipelines):

  • Derleme hizmeti kimliğinin depoda Dal oluşturma, Katkıda Bulunma ve Okuma izinlerine sahip olduğunu onaylayın.
  • Ayrıntılı kurulum yönergeleri için bkz. Betikte Git komutlarını çalıştırma .

CLI indirme hatalarını modernleştirin:

  • Çalıştırıcının internet erişiminin https://github.com olduğunu doğrulayın.
  • İndirmeyi engelleyebilecek ara sunucu veya güvenlik duvarı kısıtlamalarını denetleyin.

Sonraki Adımlar