Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zintegruj Modernize CLI z potokami ciągłej integracji i wdrażania, aby zautomatyzować modernizację aplikacji w dużej skali. W tym artykule pokazano, jak skonfigurować zarówno funkcję GitHub Actions, jak i usługę Azure Pipelines w celu uruchomienia interfejsu wiersza polecenia modernizacji zgodnie z harmonogramem lub na żądanie.
Uruchomienie Modernize CLI w potoku CI/CD umożliwia:
- Automatyzowanie uaktualnień zgodnie z harmonogramem cyklicznym bez ręcznej interwencji.
- Ustandaryzuj procesy modernizacyjne w całej organizacji.
- Śledzenie zmian za pomocą dedykowanych gałęzi i artefaktów budowania.
- Przejrzyj wyniki za pośrednictwem żądań ściągnięcia, podsumowań kompilacji i dzienników.
Przykładowe potoki w tym artykule wykonują następujące kroki:
- Pobierz i zainstaluj najnowszy Modernize CLI.
- Uruchom polecenie
modernize upgradez konfigurowalnym obiektem docelowym (na przykładJava 21). - Zatwierdź wszelkie wynikowe zmiany i prześlij je do dedykowanej gałęzi.
- Opublikuj podsumowanie wyników i prześlij logi CLI jako artefakty kompilacji.
Wymagania wstępne
- Subskrypcja Usługi GitHub Copilot: bezpłatna, Pro, Pro+, Business lub Enterprise. Zobacz Plany Copilot.
-
Token osobistego dostępu w GitHubie: twórz ten token i zapisz go jako wpis tajny repozytorium o nazwie
GH_TOKEN. Zobacz Zarządzanie osobistymi tokenami dostępu.
Skonfiguruj potok danych
Utwórz plik przepływu pracy w repozytorium pod .github/workflows/modernize.yml z następującą zawartością:
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
Szczegóły przepływu pracy
Przepływ pracy zawiera dwa wyzwalacze:
-
Wysyłanie ręczne (
workflow_dispatch): uruchom przepływ pracy na żądanie z karty Akcje. Opcjonalnie określ element docelowy aktualizacji, na przykładJava 21. -
Zaplanowane (
schedule): Uruchamiane automatycznie codziennie o 2:00 czasu UTC. Dostosuj wyrażenie cron, aby było zgodne z preferowanym harmonogramem.
Każdy przebieg wykonuje następujące kroki:
- Sprawdź kod repozytorium.
- Pobiera i instaluje najnowszą wersję Modernize CLI.
- Uruchamia
modernize upgradez określonym elementem docelowym lub uruchamialatestjako domyślne.latest - Zatwierdza wszelkie zmiany i przesyła je do gałęzi z oznaczeniem czasowym.
- Zapisuje podsumowanie z gałęzi i linkami do pull requestów w podsumowaniu kroku GitHub Actions.
- Przesyła dzienniki z Modernize CLI jako artefakt kompilacji w celu rozwiązywania problemów.
Uwaga / Notatka
Przepływ pracy jest resetowany .github/workflows przed zatwierdzeniem, aby uniknąć przypadkowego zmodyfikowania samego pliku przepływu pracy.
Uruchamianie potoku
Aby ręcznie wyzwolić przepływ pracy:
- Przejdź do repozytorium w witrynie GitHub.
- Wybierz kartę Działania.
- Wybierz pozycję Modernization CLI z listy przepływów pracy.
- Wybierz pozycję Uruchom przepływ pracy.
- Opcjonalnie wprowadź cel uaktualnienia, a następnie wybierz Uruchom przepływ pracy, aby potwierdzić.
Po zakończeniu przepływu pracy przejrzyj podsumowanie kroków, aby uzyskać linki do gałęzi wyników i utworzyć żądanie ściągnięcia w celu scalenia zmian.
Troubleshooting
Typowe problemy
Błędy uwierzytelniania:
- Sprawdź, czy tajny klucz lub zmienna
GH_TOKENsą poprawnie ustawione z użyciem prawidłowego osobistego tokenu dostępu do GitHub. - Upewnij się, że token ma wymagane zakresy dostępu do narzędzia GitHub Copilot.
Nie wykryto żadnych zmian:
- Modernize CLI może określić, że dla określonego docelowego obiektu nie są wymagane żadne zmiany.
- Przejrzyj przesłany artefakt logów, aby zdobyć szczegóły na temat oceny.
Błędy przesyłania (Azure Pipelines):
- Upewnij się, że tożsamość usługi kompilacji ma uprawnienia Utwórz gałąź, Współtworzenie i Odczyt w repozytorium.
- Aby uzyskać szczegółowe instrukcje dotyczące konfigurowania, zobacz Uruchamianie poleceń git w skrycie .
Modernizuj błędy pobierania interfejsu wiersza polecenia:
- Sprawdź, czy agent ma dostęp do Internetu https://github.com.
- Sprawdź ograniczenia serwera proxy lub zapory, które mogą blokować pobieranie.