Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интегрируйте Modernize CLI в ваши конвейеры CI/CD, чтобы автоматизировать модернизацию приложений на уровне масштаба. В этой статье показано, как настроить GitHub Actions и Azure Pipelines для запуска Modernize CLI по расписанию или по требованию.
Запуск интерфейса командной строки модернизации в конвейере CI/CD позволяет выполнять следующие действия.
- Автоматизируйте обновления по повторяющемуся графику без ручного вмешательства.
- Стандартизация рабочих процессов модернизации в организации.
- Отслеживайте изменения с помощью выделенных ветвей и артефактов сборки.
- Просмотрите результаты используя запросы на вытягивание, сводки сборок и журналы.
Примеры конвейеров в этой статье выполняют следующие действия.
- Скачайте и установите последнюю версию Modernize CLI.
- Запустите
modernize upgradeс настраиваемой целью (например,Java 21). - Зафиксируйте все полученные изменения и отправьте их в выделенную ветвь.
- Опубликуйте сводку результатов и отправьте журналы CLI в виде артефактов сборки.
Необходимые условия
- Подписка на GitHub Copilot: Бесплатный, Pro, Pro+, Бизнес или Корпоративный план. См. планы Copilot.
-
GitHub Personal Access Token (PAT): создайте маркер и сохраните его в виде секрета репозитория с именем
GH_TOKEN. См. статью "Управление личными маркерами доступа".
Настройка конвейера
Создайте в вашем репозитории файл рабочего процесса по следующему адресу .github/workflows/modernize.yml и добавьте в него следующее содержимое:
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
Сведения о бизнес-процессе
Рабочий процесс включает два триггера:
-
Отправка вручную (
workflow_dispatch): запустите рабочий процесс по запросу на вкладке "Действия ". При необходимости укажите целевой объект обновления, напримерJava 21. -
Запланированное (
schedule): автоматически запускается в 2:00 утра по UTC ежедневно. Настройте выражение cron в соответствии с предпочитаемым расписанием.
Каждый запуск выполняет следующие действия:
- Проверяет код из репозитория.
- Загружает и устанавливает самую последнюю версию Modernize CLI.
- Выполняется
modernize upgradeс указанным целевым объектом или по умолчаниюlatest. - Фиксирует все изменения и отправляет их в ветку с отметкой времени.
- Записывает сводку с ссылками на ветки и PR в раздел шагов GitHub Actions.
- Загружает журналы Modernize CLI как артефакт сборки для диагностики проблем.
Замечание
Рабочий процесс перезагружается .github/workflows перед фиксацией, чтобы избежать случайного изменения самого файла рабочего процесса.
Запуск конвейера
Чтобы активировать рабочий процесс вручную, выполните следующие действия.
- Перейдите в репозиторий на GitHub.
- Перейдите на вкладку Действия.
- Выберите интерфейс командной строки модернизации из списка рабочих процессов.
- Выберите Запуск рабочего процесса.
- При необходимости введите целевой объект обновления и нажмите кнопку "Выполнить рабочий процесс ", чтобы подтвердить.
После завершения рабочего процесса просмотрите сводку шагов, чтобы найти ссылки на результирующую ветвь, и создайте pull-запрос для слияния изменений.
Troubleshooting
Распространенные проблемы
Ошибки проверки подлинности:
- Убедитесь, что
GH_TOKENсекрет или переменная заданы правильно с допустимым персональным токеном доступа GitHub. - Убедитесь, что токен имеет необходимые области доступа для доступа к GitHub Copilot.
Никаких изменений не обнаружено:
- Интерфейс командной строки модернизации может определить, что для указанного целевого объекта не требуется никаких изменений.
- Дополнительные сведения об оценке см. в артефакте загруженных журналов.
Сбои push-уведомлений (Azure Pipelines):
- Убедитесь, что удостоверение службы сборки имеет разрешения Создать ветвь, Вклад и Чтение в репозитории.
- Подробные инструкции по настройке см. в разделе "Запуск команд Git" в скрипте.
Модернизация ошибок загрузки ИНТЕРФЕЙСА командной строки:
- Убедитесь, что у бегуна есть доступ к Интернету https://github.com.
- Проверьте ограничения прокси-сервера или брандмауэра, которые могут блокировать загрузку.