Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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: |
mkdir -p "$HOME/modernize-cli"
curl -sL https://github.com/microsoft/modernize-cli/releases/latest/download/modernize_linux_x64.tar.gz | tar -xz -C "$HOME/modernize-cli"
chmod +x "$HOME/modernize-cli/modernize"
echo "$HOME/modernize-cli" >> $GITHUB_PATH
- 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.