Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Integra la Modernize CLI nelle pipeline CI/CD per automatizzare la modernizzazione delle applicazioni. Questo articolo illustra come configurare sia GitHub Actions che Azure Pipelines per eseguire il Modernize CLI a intervalli programmati o a richiesta.
Eseguire la CLI di Modernize in una pipeline CI/CD consente di:
- Automatizzare gli aggiornamenti in base a una pianificazione ricorrente senza intervento manuale.
- Standardizzare i flussi di lavoro di modernizzazione nell'organizzazione.
- Tenere traccia delle modifiche tramite rami dedicati e artefatti di build.
- Esaminare i risultati tramite richieste pull, riepiloghi di compilazione e log.
Le pipeline di esempio in questo articolo eseguono i passaggi seguenti:
- Scaricare e installare la versione più recente dell'interfaccia della riga di comando di Modernize.
- Eseguire
modernize upgradecon una destinazione configurabile , ad esempioJava 21. - Eseguire il commit di tutte le modifiche risultanti e fare il push in un ramo dedicato.
- Pubblicare un riepilogo dei risultati e caricare i log dell'interfaccia della riga di comando come artefatti di compilazione.
Prerequisiti
- Sottoscrizione di GitHub Copilot: piano Gratuito, Pro, Pro+, Business o Enterprise. Vedere Piani di Copilot.
-
Un token di accesso personale di GitHub: creare un token e archiviarlo come segreto del repository denominato
GH_TOKEN. Vedere Gestione dei token di accesso personali.
Configurare la pipeline
Crea un file di flusso di lavoro in .github/workflows/modernize.yml nel tuo repository con il contenuto seguente:
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
Dettagli flusso di lavoro
Il flusso di lavoro include due trigger:
-
Invio manuale (
workflow_dispatch): eseguire il flusso di lavoro su richiesta dalla scheda Azioni . Specificare facoltativamente una destinazione di aggiornamento,Java 21ad esempio . -
Pianificato (
schedule): viene eseguito automaticamente alle 2:00 UTC giornaliere. Modificare l'espressione cron in modo che corrisponda alla pianificazione preferita.
Ogni esecuzione compie i passaggi seguenti:
- Estrae il codice del repository.
- Scarica e installa la versione più recente dell'interfaccia della riga di comando di Modernize.
- Esegue
modernize upgradecon la destinazione specificata o ricorre alatest. - Esegue il commit delle modifiche e le inserisce in un branch con timestamp.
- Scrive un riepilogo con collegamenti al branch e alle pull request per il riepilogo dei passaggi di GitHub Actions.
- Carica i log di Modernize CLI come artefatto di build per la risoluzione dei problemi.
Annotazioni
Il flusso di lavoro viene .github/workflows reimpostato prima del commit per evitare di modificare accidentalmente il file del flusso di lavoro stesso.
Esegui la pipeline
Per attivare manualmente il flusso di lavoro:
- Vai al tuo repository su GitHub.
- Seleziona la scheda Azioni.
- Selezionare Modernization CLI nell'elenco dei flussi di lavoro.
- Selezionare Esegui flusso di lavoro.
- Facoltativamente, immettere una destinazione di aggiornamento e quindi selezionare Esegui flusso di lavoro per confermare.
Al termine del flusso di lavoro, esaminare il riepilogo dei passaggi per i collegamenti al ramo dei risultati e creare una richiesta pull per unire le modifiche.
Risoluzione dei problemi
Problemi comuni
Errori di autenticazione:
- Verificare che il segreto o la
GH_TOKENvariabile sia impostata correttamente con un token di accesso personale GitHub valido. - Assicurarsi che il token abbia gli ambiti necessari per l'accesso a GitHub Copilot.
Nessuna modifica rilevata:
- L'interfaccia della riga di comando di Modernize potrebbe determinare che non sono necessarie modifiche per la destinazione specificata.
- Esaminare il file dei log caricati per informazioni dettagliate sulla valutazione.
Errori di push (Azure Pipelines):
- Verificare che l'identità del servizio di compilazione disponga delle autorizzazioni Create Branch, Contribute e Read nel repository.
- Per istruzioni dettagliate sull'installazione, vedere Eseguire comandi Git in uno script .
Modernizzare la gestione degli errori di download dell'interfaccia della riga di comando:
- Verificare che il runner disponga dell'accesso a Internet a https://github.com.
- Verificare la presenza di restrizioni del proxy o del firewall che potrebbero bloccare il download.