Sdílet prostřednictvím


Integrace CI/CD s využitím modernizovaného rozhraní příkazového řádku

Integrujte modernizační rozhraní příkazového řádku do kanálů CI/CD za účelem automatizace modernizace aplikací ve velkém měřítku. Tento článek ukazuje, jak nakonfigurovat GitHub Actions a Azure Pipelines k použití Modernize CLI podle plánu nebo na vyžádání.

Spuštění modernizovaného rozhraní příkazového řádku v kanálu CI/CD umožňuje:

  • Automatizujte upgrady podle opakovaného plánu bez ručního zásahu.
  • Standardizace pracovních postupů modernizace v rámci vaší organizace
  • Sledujte změny prostřednictvím vyhrazených větví a výsledných sestavení.
  • Projděte si výsledky pomocí pull requestů, souhrnů sestavení a protokolů.

Ukázkové kanály v tomto článku provádějí následující kroky:

  1. Stáhněte a nainstalujte nejnovější modernizační rozhraní příkazového řádku.
  2. Spusťte modernize upgrade s konfigurovatelným cílem (například Java 21).
  3. Potvrďte všechny výsledné změny a pushněte je do vyhrazené větve.
  4. Publikujte souhrn výsledků a nahrajte protokoly CLI jako artefakty sestavení.

Předpoklady

  • Předplatné GitHub Copilotu: plán Free, Pro, Pro+, Business nebo Enterprise. Podívejte se na plány Copilot.
  • Token PAT (Personal Access Token) GitHubu: Vytvořte token a uložte ho jako tajný kód úložiště s názvem GH_TOKEN. Viz Správa osobních přístupových tokenů.

Konfigurace kanálu

Vytvořte soubor pracovního postupu v úložišti na .github/workflows/modernize.yml s následujícím obsahem:

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

Podrobnosti pracovního postupu

Pracovní postup obsahuje dva triggery:

  • Ruční odeslání (workflow_dispatch): Na kartě Akce spusťte pracovní postup na vyžádání. Volitelně zadejte cíl upgradu, například Java 21.
  • Naplánované (schedule): Spustí se automaticky každý den v 2:00 UTC. Upravte výraz cron tak, aby odpovídal vašemu preferovanému plánu.

Každé spuštění provádí následující kroky:

  1. Zkontroluje kód úložiště.
  2. Stáhne a nainstaluje nejnovější modernizační rozhraní příkazového řádku.
  3. Spustí modernize upgrade s určeným cílem nebo výchozím nastavením latest.
  4. Potvrdí všechny změny a odešle je do větve s časovým označením.
  5. Zapíše souhrn kroku GitHub Actions s odkazy na větev a PR.
  6. Nahraje protokoly z Modernize CLI jako artefakt sestavení pro řešení potíží.

Poznámka:

Pracovní postup se resetuje .github/workflows před potvrzením, aby se zabránilo náhodné úpravě samotného souboru pracovního postupu.

Spustit procesní řetězec

Ruční aktivace pracovního postupu:

  1. Přejděte do úložiště na GitHubu.
  2. Vyberte kartu Akce.
  3. Vyberte modernizační CLI z pracovního seznamu úloh.
  4. Vyberte Spustit pracovní postup.
  5. Volitelně zadejte cíl upgradu a potvrďte výběr možnosti Spustit pracovní postup .

Po dokončení pracovního postupu zkontrolujte souhrn kroků pro odkazy na cílovou větev a vytvořte pull request pro sloučení změn.

Troubleshooting

Běžné problémy

Chyby ověřování:

  • Ověřte, že GH_TOKEN je tajný klíč nebo proměnná správně nastavená pomocí platného osobního přístupového tokenu GitHubu.
  • Ujistěte se, že token má požadované rozsahy pro přístup ke GitHub Copilot.

Nebyly zjištěny žádné změny:

  • Příkazový řádek Modernize může určit, že pro zadaný cíl nejsou potřeba žádné změny.
  • Podrobnosti o posouzení naleznete v nahraném artefaktu protokolů.

Selhání push akcí (Azure Pipelines):

Modernizovat chyby stahování CLI:

  • Ověřte, že spouštěč má přístup k https://github.cominternetu .
  • Zkontrolujte omezení proxy serveru nebo brány firewall, která by mohla blokovat stahování.

Další kroky