Delen via


CI/CD-integratie met Modernize CLI

Integreer de MODERNize CLI in uw CI/CD-pijplijnen om de modernisering van toepassingen op schaal te automatiseren. In dit artikel leest u hoe u gitHub Actions en Azure Pipelines configureert om de CLI te moderniseren volgens een planning of op aanvraag.

Door het uitvoeren van de Modernize CLI in een CI/CD-pijplijn kunt u:

  • Automatiseer upgrades volgens een terugkerend schema zonder handmatige tussenkomst.
  • Moderniseringswerkstromen in uw organisatie standaardiseren.
  • Houd wijzigingen bij via specifieke vertakkingen en build-artefacten.
  • Bekijk de resultaten via pull-aanvragen, bouwoverzichten en logboeken.

De voorbeeldpijplijnen in dit artikel voeren de volgende stappen uit:

  1. Download en installeer de nieuwste Modernize CLI.
  2. Uitvoeren modernize upgrade met een configureerbaar doel (bijvoorbeeld Java 21).
  3. Voer eventuele resulterende wijzigingen door en push deze naar een speciale tak.
  4. Publiceer een resultatenoverzicht en upload CLI-logboeken als buildartefacten.

Vereiste voorwaarden

  • Een GitHub Copilot-abonnement: Gratis, Pro, Pro+, Business of Enterprise-abonnement. Zie Copilot-plannen.
  • Een GitHub Personal Access Token (PAT): Maak een token en sla het op als een opslagplaatsgeheim met de naam GH_TOKEN. Zie Uw persoonlijke toegangstokens beheren.

De pijplijn configureren

Maak een werkstroombestand .github/workflows/modernize.yml in uw opslagplaats met de volgende inhoud:

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

Werkstroomdetails

De werkstroom bevat twee triggers:

  • Handmatig verzenden (workflow_dispatch): Voer de werkstroom op aanvraag uit vanaf het tabblad Acties . Geef desgewenst een upgradedoel op, zoals Java 21.
  • Gepland (schedule): wordt dagelijks om 2:00 uur UTC automatisch uitgevoerd. Pas de cron-expressie aan zodat deze overeenkomt met uw voorkeursschema.

Elke uitvoering voert de volgende stappen uit:

  1. Controleert de code van de opslagplaats.
  2. Downloadt en installeert de nieuwste Modernize CLI.
  3. Voer modernize upgrade uit met het opgegeven target of standaard naar latest.
  4. Voert eventuele wijzigingen door en pusht deze naar een branch met tijdstempel.
  5. Schrijft een samenvatting met branch- en PR-koppelingen naar het overzicht van de GitHub Actions-stap.
  6. Hiermee uploadt u Modernize CLI-logboeken als een bouwartefact voor probleemoplossing.

Opmerking

De werkstroom wordt opnieuw ingesteld voordat deze wordt doorgevoerd .github/workflows om te voorkomen dat het werkstroombestand zelf per ongeluk wordt gewijzigd.

De pijplijn uitvoeren

De werkstroom handmatig activeren:

  1. Ga naar uw opslagplaats op GitHub.
  2. Selecteer het tabblad Acties.
  3. Selecteer Modernization CLI in de lijst met werkstromen.
  4. Selecteer Werkstroom uitvoeren.
  5. Voer desgewenst een upgradedoel in en selecteer vervolgens Werkstroom uitvoeren om te bevestigen.

Nadat de werkstroom is voltooid, bekijkt u de samenvatting van de stap voor koppelingen naar de resultatenbranch en maakt u een pull-aanvraag om de wijzigingen samen te voegen.

Troubleshooting

Veelvoorkomende problemen

Verificatiefouten:

  • Controleer of het geheim of de GH_TOKEN variabele juist is ingesteld met een geldig persoonlijk GitHub-toegangstoken.
  • Zorg ervoor dat het token de vereiste scopes heeft voor toegang tot GitHub Copilot.

Er zijn geen wijzigingen gedetecteerd:

  • De CLI moderniseren kan bepalen dat er geen wijzigingen nodig zijn voor het opgegeven doel.
  • Bekijk het geüploade logboekartefact voor meer informatie over de evaluatie.

Pushfouten (Azure Pipelines):

  • Controleer of de buildservice-identiteit de machtigingen Create Branch, Contribute en Read heeft voor de opslagplaats.
  • Zie Git-opdrachten uitvoeren in een script voor gedetailleerde installatie-instructies.

Downloadfouten van CLI moderniseren:

  • Controleer of de runner internettoegang heeft tot https://github.com.
  • Controleer op proxy- of firewallbeperkingen die het downloaden mogelijk blokkeren.

Volgende stappen