Übung: Schützen Ihres Mainbranchs
Ihr Team arbeitet an einer Bicep-Vorlage, die bereits eine Website und eine Datenbank enthält. Sie haben die Komponenten in Ihrer Produktionsumgebung bereitgestellt. Nun müssen Sie Ihre Bicep-Vorlage aktualisieren, um Ihre Auftragsverarbeitungswarteschlange hinzuzufügen.
In dieser Übung erstellen Sie einen Featurebranch für Ihre Änderung. Außerdem schützen Sie Ihren Mainbranch und lassen nur zu, dass Änderungen im Mainbranch gemergt werden, nachdem sie überprüft wurden. Zuvor müssen Sie jedoch sicherstellen, dass Ihre Umgebung eingerichtet ist, um den Rest dieses Moduls abzuschließen.
In dem Prozess gehen Sie wie folgt vor:
- Richten Sie ein GitHub-Repository für dieses Modul ein.
- Klonen Sie das Repository auf Ihrem Computer.
- Fügen Sie dem Mainbranch Ihres Repositorys Branchschutz hinzu.
- Erstellen Sie einen lokalen Featurebranch für Ihre Änderung.
- Versuchen Sie, Ihren Featurebranch mit dem Mainbranch zu mergen.
- Richten Sie ein Azure DevOps-Projekt für dieses Modul ein.
- Klonen Sie das Repository des Projekts auf Ihren Computer.
- Fügen Sie dem Mainbranch Ihres Repositorys Branchrichtlinien hinzu.
- Erstellen Sie einen lokalen Featurebranch für Ihre Änderung.
- Versuchen Sie, Ihren Featurebranch mit dem Mainbranch zu mergen.
Abrufen des GitHub-Repositorys
Hier stellen Sie sicher, dass Ihr GitHub Repository für den Rest dieses Moduls eingerichtet ist. Sie richten es ein, indem Sie ein neues Repository basierend auf einem Vorlagenrepository erstellen. Das Vorlagenrepository enthält die Dateien, die Sie für den Einstieg in dieses Modul benötigen.
Starten über das Vorlagenrepository
Führen Sie eine Vorlage aus, mit der Ihr GitHub-Repository eingerichtet wird.
Führen Sie auf GitHub-Website die folgenden Schritte aus, um ein Repository aus der Vorlage zu erstellen:
Wählen Sie Diese Vorlage verwenden>Neues Repository erstellen aus.
Geben Sie einen Namen für das neue Projekt ein, z. B. toy-website-review.
Wählen Sie die Option Public aus.
Wenn Sie Ihre eigenen Repositorys erstellen, können Sie diese als privat festlegen. In diesem Modul arbeiten Sie mit einigen Features von GitHub, die nur mit öffentlichen Repositorys und GitHub Enterprise-Konten funktionieren.
Wählen Sie Create repository from template (Repository aus Vorlage erstellen) aus.
Abrufen des Azure DevOps-Projekts
Hier stellen Sie sicher, dass Sie Ihre Azure DevOps-Organisation so eingerichtet haben, dass Sie den Rest dieses Moduls durcharbeiten können. Sie richten sie ein, indem Sie eine Vorlage ausführen, mit der in Azure DevOps ein Projekt erstellt wird.
Führen Sie auf der Website „Azure DevOps Demo Generator“ die folgenden Schritte aus:
Wählen Sie Sign In (Anmelden) aus, und akzeptieren Sie die Nutzungsbedingungen.
Wählen Sie auf der Seite Create New Project (Neues Projekt erstellen) Ihre Azure DevOps-Organisation aus. Geben Sie dann einen Projektnamen ein, z. B. toy-website-review.
Wählen Sie Create Project (Projekt erstellen) aus.
Die Ausführung der Vorlage dauert einige Zeit. Automatisch werden eine Pipeline und eine Bicep-Datei erstellt, die Sie in späteren Übungen verwenden werden.
Klicken Sie auf Zu Projekt navigieren, um zu Ihrem Projekt in Azure DevOps zu wechseln.
Klonen des Repositorys
Sie verfügen nun über eine Kopie des Vorlagenrepositorys in Ihrem eigenen Konto. Sie klonen dieses Repository jetzt lokal, damit Sie damit arbeiten können.
Wählen Sie Code und dann das Symbol Kopieren aus.
Öffnen Sie Visual Studio Code.
Öffnen Sie in Visual Studio Code ein neues Terminalfenster, indem Sie auf Terminal>Neues Terminal klicken. Das Fenster wird in der Regel am unteren Bildschirmrand geöffnet.
Navigieren Sie im Terminal zu dem Verzeichnis, in dem Sie das GitHub-Repository auf Ihrem lokalen Computer klonen möchten. Führen Sie beispielsweise den folgenden Befehl aus, um das Repository in den Ordner toy-website-review zu klonen:
cd toy-website-review
Geben Sie
git clone
ein, fügen Sie die zuvor kopierte URL ein, und führen Sie dann den Befehl aus. Der Befehl sieht wie folgt aus:git clone https://github.com/mygithubuser/toy-website-review.git
Öffnen Sie Visual Studio Code erneut im Repositoryordner, indem Sie den folgenden Befehl am Visual Studio Code-Terminal ausführen:
code -r toy-website-review
Sie haben jetzt ein Projekt in Ihrem eigenen Konto. Sie klonen dieses Repository jetzt lokal, damit Sie damit arbeiten können.
Wählen Sie Repos>Dateien aus.
Wählen Sie Klonen aus.
Wenn Sie macOS verwenden, benötigen Sie ein spezielles Kennwort, um das Git-Repository zu klonen. Wählen Sie Git-Anmeldeinformationen generieren aus, und kopieren Sie den angezeigten Benutzernamen und das Kennwort an einen sicheren Ort.
Wählen Sie In VS Code klonen aus. Wenn Sie aufgefordert werden, das Öffnen von Visual Studio Code zuzulassen, wählen Sie Öffnen aus.
Erstellen Sie einen Ordner, der für das Repository verwendet werden soll, und wählen Sie dann Repositoryspeicherort auswählen aus.
Da Sie dieses Repository zum ersten Mal verwenden, werden Sie aufgefordert sich anzumelden.
Wenn Sie Windows verwenden, geben Sie dieselben Anmeldeinformationen ein, die Sie zuvor in dieser Übung für die Anmeldung bei Azure DevOps verwendet haben.
Wenn Sie macOS verwenden, geben Sie den Git-Benutzernamen und das Kennwort ein, den bzw. das Sie zuvor generiert haben.
Sie werden von Visual Studio Code aufgefordert, den Repositoryspeicherort zu öffnen. Klicken Sie auf Öffnen.
Hinzufügen eines Schutzes für den Branch
Konfigurieren Sie Ihr Git-Repository, um direkte Pushs an den Mainbranch zu verhindern.
Wählen Sie in Ihrem Browser Einstellungen aus.
Wählen Sie Branches aus.
Wählen Sie Add branch protection rule (Branchschutzregel hinzufügen) aus.
Geben Sie im Textfeld Branchnamensmusterden Text main ein.
Wählen Sie Pull Request vor dem Zusammenführen anfordern aus.
Deaktivieren Sie Genehmigungen erfordern. Normalerweise würden Sie diese Option auswählen. In diesem Beispiel führen Sie jedoch Ihren eigenen Pull Request zusammen, und die Option Genehmigungen erfordern verhindert dies.
Wählen Sie Umgehung der oben genannten Einstellungen nicht zulassen aus.
Sie wählen diese Einstellung als Beispiel aus, um zu zeigen, wie später in dieser Übung bei
git push
zumain
ein Fehler auftritt. In einer Produktionsumgebung sollten Sie direkte Zusammenführungen für Administratoren oder Repositorybesitzer nicht aufmain
beschränken.Wählen Sie am unteren Rand der Seite Erstellen aus.
GitHub fordert Sie möglicherweise auf, sich erneut anzumelden, um Ihre Identität zu bestätigen.
Hinzufügen von Branchrichtlinien
Konfigurieren Sie Ihr Git-Repository, um direkte Pushs an den Mainbranch zu verhindern.
Navigieren Sie in Ihrem Browser zu Repos>Branches.
Zeigen Sie auf den Branch main, und wählen Sie die drei Punkte aus.
Wählen Sie Branchrichtlinien aus.
Ändern Sie im Fenster Branchrichtlinien die Einstellung Mindestanzahl von Prüfern erfordern in Ein.
Ändern Sie die Mindestanzahl von Prüfern in 1, und wählen Sie die Option Anforderern die Genehmigung eigener Änderungen gestatten aus.
Hinweis
Hier aktivieren Sie die Option Anforderern die Genehmigung eigener Änderungen erstatten. In diesen Übungen arbeiten Sie eigenständig, sodass Sie Ihre Änderungen sowohl erstellen als auch genehmigen müssen. In einer echten Teamumgebung möchten Sie diese Option jedoch möglicherweise nicht aktivieren.
Erstellen eines lokalen Featurebranchs
Führen Sie im Visual Studio Code-Terminal folgende Anweisung aus:
git checkout -b add-orders-queue
Mit diesem Befehl wird ein neuer Featurebranch erstellt, von dem aus Sie arbeiten können.
Öffnen Sie die Datei main.bicep im Ordner deploy.
Fügen Sie unterhalb der Parameter eine neue Variable für den Namen der Warteschlange hinzu:
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var processOrderQueueName = 'processorder'
Fügen Sie in der Speicherkontoressource die Warteschlange als geschachtelte untergeordnete Ressource hinzu:
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: storageAccountName location: location sku: { name: storageAccountSkuName } kind: 'StorageV2' properties: { accessTier: 'Hot' } resource queueServices 'queueServices' existing = { name: 'default' resource processOrderQueue 'queues' = { name: processOrderQueueName } } }
Fügen Sie in der
appService
-Moduldefinition die Speicherkonto- und Warteschlangennamen als Parameter hinzu:module appService 'modules/appService.bicep' = { name: 'appService' params: { location: location appServiceAppName: appServiceAppName storageAccountName: storageAccount.name processOrderQueueName: storageAccount::queueServices::processOrderQueue.name environmentType: environmentType } }
Mit diesem Code kann die Anwendung die Warteschlange finden, an die Nachrichten gesendet werden sollen.
Öffnen Sie die Datei main.bicep.
Öffnen Sie die Datei appService.bicep im Ordner deploy/modules.
Fügen Sie am Anfang der Datei appService.bicep neue Parameter für die Speicherkonto- und Warteschlangennamen hinzu:
@description('The Azure region into which the resources should be deployed.') param location string @description('The name of the App Service app to deploy. This name must be globally unique.') param appServiceAppName string @description('The name of the storage account to deploy. This name must be globally unique.') param storageAccountName string @description('The name of the queue to deploy for processing orders.') param processOrderQueueName string @description('The type of the environment. This must be nonprod or prod.') @allowed([ 'nonprod' 'prod' ]) param environmentType string
Aktualisieren Sie die
appServiceApp
-Ressource, um die Speicherkonto- und Warteschlangennamen an die Umgebungsvariablen der Anwendung zu verteilen:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'StorageAccountName' value: storageAccountName } { name: 'ProcessOrderQueueName' value: processOrderQueueName } ] } } }
Committen und Pushen Ihres Featurebranchs
Committen und pushen Sie Ihre Änderungen in Ihr Git-Repository, indem Sie die folgenden Befehle im Visual Studio Code-Terminal ausführen:
Committen und pushen Sie Ihre Änderungen in Ihr Azure Repos-Repository, indem Sie die folgenden Befehle im Visual Studio Code-Terminal ausführen:
git add .
git commit -m "Add orders queue and associated configuration"
git push --set-upstream origin add-orders-queue
Der Featurebranch wird an einen neuen Branch in Ihrem Remoterepository gepusht, der auch add-orders-queue genannt wird.
Versuchen, den Featurebranch mit dem Mainbranch zusammenzuführen
Sie haben gelernt, warum es nicht ratsam ist, direkt an den Mainbranch zu pushen. Hier versuchen Sie, diese Richtlinie zu brechen, damit Sie sehen können, wie der Schutz Ihres Mainbranchs verhindert, dass Sie Ihre Änderungen versehentlich in einen geschützten Branch pushen.
Führen Sie im Visual Studio Code-Terminal die folgenden Anweisungen aus, um zum Mainbranch zu wechseln und den Branch add-orders-queue damit zu mergen:
git checkout main git merge add-orders-queue
Der Befehl funktionierte, aber Sie haben den Branch add-orders-queue nur in Ihrem lokalen Git-Repository mit Ihrem Mainbranch gemergt.
Führen Sie die folgende Anweisung aus, um zu versuchen, Ihre Änderungen an GitHub zu pushen:
git push
Beachten Sie, dass bei Ihrem Push ein Fehler mit etwa folgender Meldung auftritt:
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 remote: error: GH006: Protected branch update failed for refs/heads/main. remote: error: Changes must be made through a pull request. To https://github.com/mygithubuser/toy-website-review.git ! [remote rejected] main -> main (protected branch hook declined) error: failed to push some refs to 'https://github.com/mygithubuser/toy-website-review.git'
Die Fehlermeldung weist Sie darauf hin, dass Pushs an den Mainbranch nicht zulässig sind, und dass Sie einen Pull Request verwenden müssen, um den Branch zu aktualisieren.
Führen Sie die folgende Anweisung aus, um den Merge rückgängig zu machen:
git reset --hard HEAD~1
Dieser Befehl weist Ihr lokales Git-Repository an, den Status des Mainbranchs in den Zustand vor dem Mergen des letzten Commits zurückzusetzen, und nicht, die Änderungen zu speichern. Der Branch add-orders-queue ist nicht betroffen.
Sie haben gelernt, warum es nicht ratsam ist, direkt an den Mainbranch zu pushen. Hier versuchen Sie, diese Richtlinie zu brechen, damit Sie sehen können, wie die Branchrichtlinien verhindern, dass Sie Ihre Änderungen versehentlich in einen geschützten Branch pushen.
Führen Sie im Visual Studio Code-Terminal die folgenden Anweisungen aus, um zum Mainbranch zu wechseln und den Branch add-orders-queue damit zu mergen:
git checkout main git merge add-orders-queue
Der Befehl funktionierte, aber Sie haben den Branch add-orders-queue nur in Ihrem lokalen Git-Repository mit Ihrem Mainbranch gemergt.
Führen Sie die folgende Anweisung aus, um zu versuchen, Ihre Änderungen an Azure Repositorys zu pushen:
git push
Beachten Sie, dass bei Ihrem Push ein Fehler mit etwa folgender Meldung auftritt:
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 To https://dev.azure.com/mytoycompany/toy-website-review/_git/toy-website-review ! [remote rejected] main -> main (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.) error: failed to push some refs to 'https://dev.azure.com/mytoycompany/toy-website-review/_git/toy-website-review'
Die Fehlermeldung weist Sie darauf hin, dass Pushs an den Mainbranch nicht zulässig sind, und dass Sie einen Pull Request verwenden müssen, um den Branch zu aktualisieren.
Führen Sie die folgende Anweisung aus, um den Merge rückgängig zu machen:
git reset --hard HEAD~1
Dieser Befehl weist Ihr lokales Git-Repository an, den Status des Mainbranchs in den Zustand vor dem Mergen des letzten Commits zurückzusetzen, und nicht, die Änderungen zu speichern. Der Branch add-orders-queue ist nicht betroffen.