Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Integre la CLI de Modernize en las canalizaciones de CI/CD para automatizar la modernización de aplicaciones a escala. En este artículo se muestra cómo configurar Acciones de GitHub y Azure Pipelines para ejecutar la CLI de Modernize según una programación o a petición.
La ejecución de la CLI de Modernize en una canalización de CI/CD le permite:
- Automatice las actualizaciones de manera recurrente sin necesidad de intervención manual.
- Estandarizar los flujos de trabajo de modernización en toda la organización.
- Realice un seguimiento de los cambios a través de ramas dedicadas y cree artefactos.
- Revise los resultados a través de solicitudes de incorporación de cambios, resúmenes de compilación y registros.
Las canalizaciones de ejemplo de este artículo realizan los pasos siguientes:
- Descargue e instale la CLI de Modernize más reciente.
- Ejecute
modernize upgradecon un destino configurable (por ejemplo,Java 21). - Confirme los cambios resultantes e insértelos en una rama dedicada.
- Publique un resumen de resultados y cargue los registros de la CLI como artefactos de compilación.
Prerrequisitos
- Una suscripción a GitHub Copilot: plan Gratis, Pro, Pro+, Empresa o Enterprise. Consulta los planes de Copilot.
-
Un token de acceso personal (PAT) de GitHub: cree un token y almacénelo como un secreto de repositorio denominado
GH_TOKEN. Consulte Administración de los tokens de acceso personal.
Configuración de la canalización
Cree un archivo de flujo de trabajo en .github/workflows/modernize.yml en el repositorio con el siguiente contenido:
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
Detalles del flujo de trabajo
El flujo de trabajo incluye dos desencadenadores:
-
Envío manual (
workflow_dispatch): ejecute el flujo de trabajo a petición desde la pestaña Acciones . Opcionalmente, especifique un destino de actualización comoJava 21. -
Programado (
schedule): se ejecuta automáticamente a las 2:00 UTC diariamente. Ajuste la expresión cron para que coincida con la programación preferida.
Cada ejecución realiza los pasos siguientes:
- Extrae el código del repositorio.
- Descarga e instala la CLI de Modernize más reciente.
- Se ejecuta
modernize upgradecon el destino especificado o por defecto enlatest. - Confirma los cambios e los inserta en una rama con marca de tiempo.
- Escribe un resumen con vínculos de rama y solicitud de incorporación de cambios en el resumen del paso Acciones de GitHub.
- Carga Modernizar los registros de la CLI como un artefacto de compilación para solucionar problemas.
Nota:
El flujo de trabajo se restablece .github/workflows antes de confirmar para evitar modificar accidentalmente el propio archivo de flujo de trabajo.
Ejecución de la canalización
Para desencadenar el flujo de trabajo manualmente:
- Vaya al repositorio en GitHub.
- Selecciona la pestaña Acciones.
- Seleccione La CLI de modernización en la lista de flujos de trabajo.
- Seleccione Ejecutar flujo de trabajo.
- Opcionalmente, escriba un destino de actualización y, a continuación, seleccione Ejecutar flujo de trabajo para confirmar.
Una vez finalizado el flujo de trabajo, revise el resumen del paso para ver los vínculos a la rama de resultados y cree una solicitud de incorporación de cambios para combinar los cambios.
Solución de problemas
Problemas comunes
Errores de autenticación:
- Compruebe que el secreto o la
GH_TOKENvariable se ha establecido correctamente con un token de acceso personal de GitHub válido. - Asegúrese de que el token tiene los ámbitos necesarios para el acceso a GitHub Copilot.
No se detectaron cambios:
- La CLI de Modernize podría determinar que no se necesitan cambios para el destino especificado.
- Revise los archivos de registro cargados para más detalles sobre la evaluación.
Errores de envío (Azure Pipelines):
- Confirme que la identidad del servicio de compilación tiene permisos crear rama, Contribuir y Leer en el repositorio.
- Consulte Ejecución de comandos de Git en un script para obtener instrucciones detalladas de configuración.
Modernizar errores de descarga del CLI:
- Verifique que el corredor tiene acceso a Internet a https://github.com.
- Compruebe si hay restricciones de proxy o firewall que podrían bloquear la descarga.