Ćwiczenie — tworzenie przepływu pracy dla żądania ściągnięcia

Ukończone

Zespół deweloperów witryny internetowej poprosił Cię o zaktualizowanie witryny internetowej do uruchomienia w systemie operacyjnym Linux. W tym ćwiczeniu dodasz przepływ pracy weryfikacji, który jest uruchamiany automatycznie po otwarciu lub zaktualizowaniu żądania ściągnięcia. Następnie utworzysz żądanie ściągnięcia dla zmiany systemu operacyjnego witryny internetowej.

Podczas tego procesu wykonasz następujące czynności:

  • Utwórz przepływ pracy na potrzeby weryfikacji żądania ściągnięcia.
  • Dodaj linting Bicep do przepływu pracy.
  • Utwórz żądanie ściągnięcia i obejrzyj przebieg przepływu pracy.
  • Napraw wszelkie błędy identyfikowane przez przepływ pracy weryfikacji żądania ściągnięcia.
  • Uruchom ponownie przepływ pracy, a następnie scal i zamknij żądanie ściągnięcia.

Tworzenie przepływu pracy do uruchamiania po utworzeniu i zaktualizowaniu żądań ściągnięcia

  1. W programie Visual Studio Code utwórz nowy plik o nazwie pr-validation.yml w folderze .github/workflows .

    Zrzut ekranu programu Visual Studio Code przedstawiający plik weryfikacji żądania ściągnięcia dot YML w folderze przepływów pracy.

  2. Dodaj następujący kod do pliku:

    name: pr-validation
    
    on: pull_request
    

    Ten kod gwarantuje, że przepływ pracy jest wykonywany za każdym razem, gdy żądanie ściągnięcia zostanie utworzone lub zaktualizowane.

    Uwaga

    Pracujesz bezpośrednio z gałęzią główną repozytorium. Zwykle tego nie zrobisz, ale w tym ćwiczeniu będziesz pracować z głównymi elementami, aby uprościć kroki. We własnych projektach ważne jest skonfigurowanie reguł ochrony gałęzi w celu ochrony głównej gałęzi.

Dodawanie zadania lint do przepływu pracy

Za każdym razem, gdy otworzysz lub edytujesz żądanie ściągnięcia, chcesz uruchomić krok lintingu dla plików Bicep. W repozytorium istnieje przepływ pracy wielokrotnego użytku , który można wywołać z tego przepływu pracy.

  1. Na końcu istniejącej zawartości pliku, aby ponownie użyć przepływu pracy lint zdefiniowanego w repozytorium, dodaj następujące wiersze:

    jobs:
      lint:
        uses: ./.github/workflows/lint.yml
    

    Repozytorium zawiera plik bicepconfig.json , który konfiguruje linter do emitowania błędów zamiast ostrzeżeń, więc wszelkie błędy podczas zadania lint spowodują niepowodzenie przepływu pracy.

  2. Zapisz zmiany.

  3. Zatwierdź i wypchnij zmiany do głównej gałęzi repozytorium Git, uruchamiając następujące polecenia w terminalu programu Visual Studio Code:

    git add .
    git commit -m "Add first version of pull request validation workflow"
    git push
    

Aktualizowanie pliku Bicep

Następnie zmodyfikuj plik Bicep witryny internetowej, aby zaktualizować system operacyjny witryny internetowej do systemu Linux.

  1. W terminalu programu Visual Studio Code utwórz nową gałąź dla zmian, uruchamiając następujące polecenie:

    git checkout -b feature/linux-app
    
  2. Otwórz plik main.bicep w folderze deploy.

  3. W górnej części pliku poniżej definicji zmiennych zdefiniuj nową zmienną, która ma być używana przez strukturę aplikacji:

    // Define the names for resources.
    var appServiceAppName = 'toy-website-linux-${resourceNameSuffix}'
    var appServicePlanName = 'toy-website-linux'
    var storageAccountName = 'mystorage${resourceNameSuffix}'
    
    var appServiceAppLinuxFrameworkVersion = 'node|14-lts'
    

    To ustawienie informuje aplikacja systemu Azure Service, że aplikacja zostanie skompilowana przy użyciu wersji 14 platformy Node.js.

  4. Zaktualizuj definicję appServicePlan zasobu. kind Dodaj właściwość i reserved właściwość w properties obiekcie :

    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
      kind: 'linux'
      properties: {
        reserved: true
      }
    }
    
  5. Zaktualizuj definicję zasobu, appServiceApp aby ustawić strukturę aplikacji:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: 'node|14-lts'
        }
      }
    }
    

    Uwaga

    Możesz zauważyć, że Bicep ostrzega, że nie używasz zmiennej appServiceAppLinuxFrameworkVersion . W tym miejscu celowo powodujesz błąd linter, aby zobaczyć, jak wygląda w żądaniu ściągnięcia usługi GitHub.

  6. Zapisz zmiany.

  7. Zatwierdź i wypchnij zmiany do repozytorium Git, uruchamiając następujące polecenia w terminalu programu Visual Studio Code:

    git add .
    git commit -m "Update operating system to Linux"
    git push origin feature/linux-app
    

Tworzenie żądania ściągnięcia

Po skonfigurowaniu przepływu pracy i zaktualizowaniu pliku Bicep możesz utworzyć żądanie ściągnięcia.

  1. W przeglądarce wybierz pozycję Kod.

  2. Wybierz 2 gałęzie , aby otworzyć listę gałęzi w repozytorium GitHub.

    Zrzut ekranu usługi GitHub przedstawiający listę gałęzi repozytorium.

    Porównanie i żądanie ściągnięcia jest wyświetlane przez krótki czas, gdy wypychasz zmiany do gałęzi, która nie ma jeszcze otwartego żądania ściągnięcia. Jest to skrót do strony Otwieranie żądania ściągnięcia.

  3. Obok gałęzi feature/linux-app wybierz pozycję Nowe żądanie ściągnięcia. Może być konieczne wybranie ikony Więcej (...), aby wyświetlić opcję Nowe żądanie ściągnięcia.

    Zrzut ekranu usługi GitHub przedstawiający link umożliwiający utworzenie żądania ściągnięcia dla gałęzi aplikacji systemu Linux ukośnika funkcji.

  4. Wybierz pozycję Utwórz żądanie ściągnięcia.

    Zrzut ekranu przedstawiający okienko

    Zostanie wyświetlona strona szczegółów żądania ściągnięcia.

  5. Wyświetl sekcję Kontrole szczegółów żądania ściągnięcia.

    Po chwili zwróć uwagę, że jest wyzwalane automatyczne sprawdzanie. Sprawdzanie uruchamia przepływ pracy weryfikacji żądania ściągnięcia.

    Uruchomienie przepływu pracy może zająć trochę czasu. Odśwież okno przeglądarki do momentu wyświetlenia kontroli stanu.

    Po zakończeniu sprawdzania widać, że nie powiodło się.

    Zrzut ekranu usługi GitHub przedstawiający sprawdzanie stanu niepowodzenia na stronie szczegółów żądania ściągnięcia.

    Uwaga

    Usługa GitHub umożliwia scalenie żądania ściągnięcia, mimo że sprawdzanie stanu nie powiodło się. W rzeczywistym rozwiązaniu należy skonfigurować regułę ochrony gałęzi, aby zapobiec scaleniu żądania ściągnięcia do momentu pomyślnego sprawdzenia stanu.

Naprawianie błędów walidacji żądania ściągnięcia

  1. W okienku sprawdzania stanu wybierz pozycję Szczegóły , aby sprawdzić dziennik przepływu pracy.

    Zrzut ekranu usługi GitHub przedstawiający dziennik przepływu pracy, w tym błąd weryfikacji.

    Dziennik zawiera ten komunikat z lintera Bicep:

    Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
    
  2. W programie Visual Studio Code otwórz plik deploy/main.bicep .

    W wierszu 20 istnieje zmienna o nazwie appServiceAppLinuxFrameworkVersion. Zmienna nie jest używana. Następnie naprawisz ten błąd.

  3. appServiceApp W definicji zasobu zaktualizuj linuxFxVersion właściwość , aby użyć zmiennej, zamiast ustawiać właściwość na wartość zakodowaną na sztywno:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: appServiceAppLinuxFrameworkVersion
        }
      }
    }
    
  4. W terminalu programu Visual Studio Code zatwierdź zmiany i wypchnij je do repozytorium.

    git add .
    git commit -m "Fix Bicep file"
    git push origin feature/linux-app
    

Monitorowanie i scalanie żądania ściągnięcia

  1. Otwórz ponownie przeglądarkę na stronie szczegółów żądania ściągnięcia.

    Walidacja żądania ściągnięcia zostanie uruchomiona ponownie. Jeśli sprawdzanie stanu nie jest uruchomione, odśwież stronę.

    Poczekaj na zakończenie sprawdzania. Tym razem to się powiedzie. W pliku Bicep nie ma żadnych błędów składni ani linter, więc możesz scalić żądanie ściągnięcia.

  2. Wybierz pozycję Scal żądanie ściągnięcia, aby zamknąć żądanie ściągnięcia i scalić zmiany w gałęzi głównej.

    Zrzut ekranu usługi GitHub przedstawiający przycisk

  3. Wybierz pozycję Potwierdź scalanie.