Übung: Erstellen eines Workflows für einen Pull Request

Abgeschlossen

Das Entwicklungsteam Ihrer Website hat Sie gebeten, die Website so zu aktualisieren, dass sie unter dem Linux-Betriebssystem ausgeführt werden kann. In dieser Übung fügen Sie einen Überprüfungsworkflow hinzu, der automatisch ausgeführt wird, wenn ein Pull Request geöffnet oder aktualisiert wird. Dann erstellen Sie einen Pull Request für die Änderung des Betriebssystems Ihrer Website.

In dem Prozess gehen Sie wie folgt vor:

  • Erstellen Sie einen Workflow für die Überprüfung von Pull Requests.
  • Fügen Sie dem Workflow das Bicep-Linten hinzu.
  • Erstellen Sie einen Pull Request, und beobachten Sie die Ausführung des Workflows.
  • Beheben Sie alle vom Workflow für die Pull Request-Überprüfung ggf. identifizierten Fehler.
  • Führen Sie den Workflow erneut aus, mergen Sie den Pull Request dann, und schließen Sie ihn.

Erstellen eines Workflows, der ausgeführt wird, wenn Pull Requests erstellt und aktualisiert werden

  1. Erstellen Sie in Visual Studio Code eine neue Datei im Ordner .github/workflows namens pr-validation.yml.

    Screenshot von Visual Studio Code mit der Datei „pr-validation.yml“ im Ordner „workflows“.

  2. Fügen Sie der Datei den folgenden Code hinzu:

    name: pr-validation
    
    on: pull_request
    

    Dieser Code stellt sicher, dass der Workflow immer dann ausgeführt wird, wenn ein Pull Request erstellt oder aktualisiert wird.

    Hinweis

    Sie arbeiten direkt mit dem Mainbranch Ihres Repositorys. Normalerweise würden so nicht vorgehen, aber in dieser Übung arbeiten Sie mit Main, um die Schritte zu vereinfachen. In Ihren eigenen Projekten ist es wichtig, Regeln zum Schutz des Branches festzulegen, um Ihren Mainbranch zu schützen.

Hinzufügen eines Lint-Auftrags zu Ihrem Workflow

Immer wenn Sie einen Pull Request öffnen oder bearbeiten, möchten Sie einen Linting-Schritt für Ihre Bicep-Dateien ausführen. Es gibt einen wiederverwendbaren Lint-Workflow im Repository, den Sie aus diesem Workflow aufrufen können.

  1. Fügen Sie am Ende des vorhandenen Dateiinhalts die folgenden Zeilen hinzu, um den in Ihrem Repository definierten Lint-Workflow wiederzuverwenden:

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

    Ihr Repository verfügt über eine Datei bicepconfig.json, die den Linter so konfiguriert, dass anstelle von Warnungen entsprechende Fehler ausgegeben werden, sodass alle Fehler während des Lint-Auftrags dazu führen, dass der Workflow fehlschlägt.

  2. Speichern Sie die Änderungen.

  3. Committen und pushen Sie Ihre Änderungen in den Mainbranch Ihres Git-Repositorys, indem Sie die folgenden Befehle im Visual Studio Code-Terminal ausführen:

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

Update der Bicep-Datei

Nun ändern Sie die Bicep-Datei Ihrer Website, um das Betriebssystem der Website auf Linux zu aktualisieren.

  1. Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus, um einen neuen Branch für Ihre Änderungen zu erstellen:

    git checkout -b feature/linux-app
    
  2. Öffnen Sie die Datei main.bicep im Ordner deploy.

  3. Definieren Sie am Anfang der Datei unterhalb der Variablendefinitionen eine neue Variable, die vom Anwendungsframework verwendet werden soll:

    // 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'
    

    Diese Einstellung teilt Azure App Service mit, dass die Anwendung mit Version 14 des Node.js-Frameworks erstellt wird.

  4. Aktualisieren Sie die appServicePlan-Ressourcendefinition. Fügen Sie die Eigenschaften kind und reserved dem Objekt properties hinzu:

    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
      kind: 'linux'
      properties: {
        reserved: true
      }
    }
    
  5. Aktualisieren Sie die appServiceApp-Ressourcendefinition, um das Anwendungsframework festzulegen:

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

    Hinweis

    Sie werden möglicherweise feststellen, dass Bicep Sie warnt, dass Sie die Variable appServiceAppLinuxFrameworkVersion nicht verwenden. Hier verursachen Sie absichtlich einen Linter-Fehler, damit Sie sehen können, wie er innerhalb des GitHub-Pull Requests aussieht.

  6. Speichern Sie die Änderungen.

  7. Committen und pushen Sie Ihre Änderungen in Ihr Git-Repository, indem Sie die folgenden Befehle im Visual Studio Code-Terminal ausführen:

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

Erstellen eines Pull Request

Nachdem der Workflow konfiguriert und Ihre Bicep-Datei aktualisiert wurde, können Sie einen Pull Request erstellen.

  1. Wählen Sie in Ihrem Browser Code aus.

  2. Wählen Sie 2 Branches aus, um die Liste der Branches in Ihrem GitHub-Repository zu öffnen.

    Screenshot von GitHub: Branchliste des Repositorys

    Vergleichen und Pull Request wird kurze Zeit angezeigt, wenn Sie Änderungen in einen Branch pushen, für den noch kein geöffneter Pull Request vorhanden ist. Dies ist eine Verknüpfung mit der Seite Pull Request öffnen.

  3. Wählen Sie neben dem Branch feature/linux-app die Option Neuer Pull Request aus. Möglicherweise müssen Sie das Symbol Mehr (...) auswählen, um die Option Neuer Pull Request anzuzeigen.

    Screenshot von GitHub: Link zum Erstellen eines Pull Requests für den Branch „feature/linux-app“

  4. Klicken Sie auf Pull Request erstellen.

    Screenshot von GitHub: Bereich zum Öffnen eines Pull Requests mit Schaltfläche „Pull Request öffnen“

    Die Detailseite des Pull Requests wird angezeigt.

  5. Zeigen Sie den Abschnitt Überprüfungen der Pull Request-Details an.

    Beachten Sie, dass nach kurzer Zeit eine automatische Überprüfung ausgelöst wird. Die Prüfung führt den Workflow für die Pull Request-Überprüfung aus.

    Es kann einige Zeit dauern, bis der Workflow ausgeführt wird. Aktualisieren Sie das Browserfenster, bis die Statusüberprüfungen angezeigt werden.

    Wenn die Überprüfung abgeschlossen ist, können Sie sehen, dass sie fehlgeschlagen ist.

    Screenshot von GitHub: Fehlgeschlagene Statusprüfung auf der Detailseite zum Pull Request

    Hinweis

    GitHub ermöglicht es Ihnen, den Pull Request zu mergen, obwohl die Statusüberprüfungen fehlschlagen sind. In einer realen Lösung sollten Sie eine Regel zum Schutz des Branches konfigurieren, um zu verhindern, dass ein Pull Request zusammengeführt wird, bevor seine Statusüberprüfungen erfolgreich waren.

Beheben der Fehler der Pull Request-Überprüfung

  1. Wählen Sie im Bereich „Statusüberprüfung“ die Option Details aus, um das Workflowprotokoll zu untersuchen.

    Screenshot von GitHub: Workflowprotokoll einschließlich Überprüfungsfehler

    Das Protokoll enthält diese Meldung vom Bicep-Linter:

    Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
    
  2. Öffnen Sie in Visual Studio Code die Datei deploy/main.bicep.

    In Zeile 20 gibt es eine Variable namens appServiceAppLinuxFrameworkVersion. Die Variable wird nicht verwendet. Als nächstes beheben Sie diesen Fehler.

  3. Aktualisieren Sie in der appServiceApp-Ressourcendefinition die linuxFxVersion-Eigenschaft so, dass die Variable verwendet wird, anstatt die Eigenschaft auf den hartcodierten Wert festzulegen:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: appServiceAppLinuxFrameworkVersion
        }
      }
    }
    
  4. Committen Sie Ihre Änderungen im Visual Studio Code-Terminal, und pushen Sie sie in das Repository.

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

Überwachen und Zusammenführen des Pull Requests

  1. Öffnen Sie in Ihrem Browser erneut die Detailseite für Pull Requests.

    Die Pull Request-Überprüfung wird erneut ausgeführt. Wenn die Statusprüfung nicht ausgeführt wird, aktualisieren Sie die Seite.

    Warten Sie, bis die Überprüfung abgeschlossen wurde. Dieses Mal war der Vorgang erfolgreich. Da in der Bicep-Datei keine Syntax- oder Linter-Fehler vorhanden sind, können Sie den Pull Request zusammenführen.

  2. Wählen Sie Pull Request zusammenführen aus, um den Pull Request zu schließen und die Änderungen in Ihrem Mainbranch zusammenzuführen.

    Screenshot von GitHub: Schaltfläche „Pull Request mergen“ auf der Detailseite zum Pull Request

  3. Wählen Sie Merge bestätigen aus.