Oefening: uw hoofdvertakking beveiligen

Voltooid

Uw team werkt aan een Bicep-sjabloon die al een website en een database bevat. U hebt de onderdelen geïmplementeerd in uw productieomgeving. Nu moet u uw Bicep-sjabloon bijwerken om uw orderverwerkingswachtrij toe te voegen.

In deze oefening maakt u een functiebranch voor uw wijziging. U beveiligt ook uw hoofdbranch en staat alleen toe dat wijzigingen worden samengevoegd met de hoofdbranch nadat ze zijn gecontroleerd. Daarvoor moet u er echter voor zorgen dat uw omgeving is ingesteld om de rest van deze module te voltooien.

Tijdens het proces gaat u het volgende doen:

  • Stel een GitHub-opslagplaats in voor deze module.
  • Kloon de opslagplaats naar uw computer.
  • Voeg vertakkingsbeveiliging toe aan de hoofdbranch van uw opslagplaats.
  • Maak een lokale functiebranch voor uw wijziging.
  • Probeer uw functiebranch samen te voegen in de hoofdfunctie.
  • Een Azure DevOps-project instellen voor deze module.
  • Kloon de opslagplaats van het project naar uw computer.
  • Voeg vertakkingsbeleid toe aan de hoofdbranch van uw opslagplaats.
  • Maak een lokale functiebranch voor uw wijziging.
  • Probeer uw functiebranch samen te voegen in de hoofdfunctie.

De GitHub-opslagplaats ophalen

Hier zorgt u ervoor dat uw GitHub-opslagplaats is ingesteld om de rest van deze module te voltooien. U stelt deze in door een nieuwe opslagplaats te maken op basis van een sjabloonopslagplaats. De sjabloonopslagplaats bevat de bestanden die u nodig hebt om aan de slag te gaan voor deze module.

Beginnen vanuit de sjabloonopslagplaats

Voer een sjabloon uit waarmee uw GitHub-opslagplaats wordt ingesteld.

Voer op de GitHub-site de volgende stappen uit om een opslagplaats te maken op basis van de sjabloon:

  1. Selecteer Deze sjabloon>gebruiken. Maak een nieuwe opslagplaats.

    Schermopname van de GitHub-interface waarin de sjabloonopslagplaats wordt weergegeven, met de knop voor het gebruik van de huidige sjabloon gemarkeerd.

  2. Voer een naam in voor uw nieuwe project, zoals speelgoedwebsitebeoordeling.

  3. Selecteer de optie Openbaar .

    Wanneer u uw eigen opslagplaatsen maakt, wilt u deze mogelijk privé maken. In deze module werkt u met functies van GitHub die alleen werken met openbare opslagplaatsen en met GitHub Enterprise-accounts.

  4. Selecteer Opslagplaats maken van sjabloon.

    Schermopname van de GitHub-interface waarop de pagina voor het maken van opslagplaatsen wordt weergegeven.

Het Azure DevOps-project ophalen

Hier zorgt u ervoor dat uw Azure DevOps-organisatie is ingesteld om de rest van deze module te voltooien. U stelt deze in door een sjabloon uit te voeren waarmee een project in Azure DevOps wordt gemaakt.

Voer de volgende stappen uit op de azure DevOps Demo Generator-site:

  1. Selecteer Aanmelden en accepteer de gebruiksvoorwaarden.

  2. Selecteer uw Azure DevOps-organisatie op de pagina Nieuw project maken. Voer vervolgens een projectnaam in, zoals speelgoedwebsitebeoordeling.

    Schermopname van het maken van een project via de Azure DevOps Demo Generator.

  3. Selecteer Project maken.

    Het duurt even voordat de sjabloon wordt uitgevoerd. Er wordt automatisch een pijplijn en Bicep-bestand gemaakt dat u in latere oefeningen gaat gebruiken.

  4. Selecteer Navigeren naar project om naar uw project te gaan in Azure DevOps.

De opslagplaats klonen

U hebt nu een kopie van de sjabloonopslagplaats in uw eigen account. Kloon deze opslagplaats lokaal, zodat u eraan kunt gaan werken.

  1. Selecteer Code en selecteer vervolgens het pictogram Kopiëren .

    Schermopname van de GitHub-interface waarin de nieuwe opslagplaats wordt weergegeven, met de knop U R L-kopie van de opslagplaats gemarkeerd.

  2. Open Visual Studio Code.

  3. Open een Visual Studio Code-terminalvenster door Terminal>New Terminal te selecteren. Het venster wordt meestal onderaan het scherm geopend.

  4. Ga in de terminal naar de map waar u de GitHub-opslagplaats op uw lokale computer wilt klonen. Als u bijvoorbeeld de opslagplaats wilt klonen naar de map toy-website-review , voert u de volgende opdracht uit:

    cd toy-website-review
    
  5. Typ git clone en plak de URL die u eerder hebt gekopieerd en voer de opdracht uit. De opdracht ziet er als volgt uit:

    git clone https://github.com/mygithubuser/toy-website-review.git
    
  6. Open Visual Studio Code opnieuw in de opslagplaatsmap door de volgende opdracht uit te voeren in de Visual Studio Code-terminal:

    code -r toy-website-review
    

U hebt nu een project in uw eigen account. Kloon deze opslagplaats lokaal, zodat u eraan kunt gaan werken.

  1. Selecteer Opslagplaatsbestanden>.

    Schermopname van Azure DevOps met het menu Opslagplaatsen, met Bestanden gemarkeerd.

  2. Selecteer Klonen.

    Schermopname van Azure DevOps waarin de opslagplaats wordt weergegeven, met de knop Klonen gemarkeerd.

  3. Als u macOS gebruikt, hebt u een speciaal wachtwoord nodig om de Git-opslagplaats te klonen. Selecteer Git-referenties genereren en kopieer de weergegeven gebruikersnaam en het wachtwoord naar een veilige locatie.

  4. Selecteer Klonen in VS Code. Als u wordt gevraagd om Visual Studio Code te openen, selecteert u Openen.

    Schermopname van Azure DevOps met de instellingen van de opslagplaats, met de knop voor het klonen in Visual Studio Code gemarkeerd.

  5. Maak een map die u voor de opslagplaats wilt gebruiken en kies Opslagplaatslocatie selecteren.

  6. U gebruikt deze opslagplaats voor het eerst, dus u wordt gevraagd u aan te melden.

    • Als u Windows gebruikt, voert u dezelfde referenties in die u eerder in deze oefening hebt gebruikt om u aan te melden bij Azure DevOps.

    • Als u macOS gebruikt, voert u de Git-gebruikersnaam en het wachtwoord in die u een paar ogenblik geleden hebt gegenereerd.

  7. Visual Studio Code vraagt u om de opslagplaats te openen. Selecteer Openen.

    Schermopname van Visual Studio Code met een prompt om de gekloonde opslagplaats te openen, met de knop Openen gemarkeerd.

Vertakkingsbeveiligingen toevoegen

Configureer uw Git-opslagplaats om directe pushes naar de hoofdbranch te voorkomen.

  1. Selecteer Instellingen in uw browser.

  2. Selecteer Vertakkingen.

  3. Selecteer Vertakkingsbeveiligingsregel toevoegen.

    Schermopname van GitHub met de pagina voor het toevoegen van vertakkingsbeveiligingsregels, met de knop voor het toevoegen van een regel gemarkeerd.

  4. Voer in het tekstvak Vertakkingsnaampatroon de hoofdtekst in.

  5. Selecteer Een pull-aanvraag vereisen voordat u samenvoegt.

    Wis goedkeuringen vereisen. Normaal gesproken selecteert u deze optie. In dit voorbeeld gaat u echter uw eigen pull-aanvraag samenvoegen en de optie Goedkeuring vereisen voorkomt dat u dit doet.

  6. Selecteer Niet toestaan dat de bovenstaande instellingen worden overgeslagen.

    U selecteert deze instelling als voorbeeld om te laten zien hoe git push main het later in deze oefening mislukt. In een productieomgeving wilt u mogelijk geen directe samenvoegingen beperken tot main beheerders of eigenaren van opslagplaatsen.

  7. Selecteer Onder aan de pagina de optie Maken.

    Schermopname van GitHub met de knop Maken.

    GitHub kan u mogelijk vragen om u opnieuw aan te melden om uw identiteit te bevestigen.

Vertakkingsbeleid toevoegen

Configureer uw Git-opslagplaats om directe pushes naar de hoofdbranch te voorkomen.

  1. Ga in uw browser naar Opslagplaatsen>vertakkingen.

  2. Beweeg de muisaanwijzer over de hoofdbranch en selecteer de drie puntjes.

  3. Selecteer Vertakkingsbeleid.

    Schermopname van Azure DevOps met de lijst met vertakkingen, met het contextmenu weergegeven en het menu-item voor vertakkingsbeleid gemarkeerd.

  4. Wijzig in het venster Vertakkingsbeleid de instelling Minimum aantal revisoren vereisen in Aan.

  5. Wijzig het minimale aantal revisoren in 1 en selecteer de aanvragers toestaan om hun eigen wijzigingsoptie goed te keuren.

    Schermopname van Azure DevOps met de pagina Vertakkingsbeleid voor de hoofdbranch.

    Notitie

    Hier kunt u toestaan dat aanvragers hun eigen wijzigingsoptie goedkeuren. In deze oefeningen werkt u zelf aan het werk, dus u moet zowel uw wijzigingen maken als goedkeuren. Maar in een echte teamomgeving wilt u deze optie mogelijk niet inschakelen.

Een lokale functiebranch maken

  1. Voer in de Visual Studio Code-terminal de volgende instructie uit:

    git checkout -b add-orders-queue
    

    Met deze opdracht maakt u een nieuwe functiebranch waaruit u kunt werken.

  2. Open het bestand main.bicep in de implementatiemap .

    Schermopname van Visual Studio Code met het belangrijkste dot bicep-bestand in de implementatiemap.

  3. Voeg onder de parameters een nieuwe variabele toe voor de naam van de wachtrij:

    var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
    var processOrderQueueName = 'processorder'
    
  4. Voeg in de opslagaccountresource de wachtrij toe als een geneste onderliggende resource:

    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
        }
      }
    }
    
  5. Voeg in de appService moduledefinitie de namen van het opslagaccount en de wachtrij toe als parameters:

    module appService 'modules/appService.bicep' = {
      name: 'appService'
      params: {
        location: location
        appServiceAppName: appServiceAppName
        storageAccountName: storageAccount.name
        processOrderQueueName: storageAccount::queueServices::processOrderQueue.name
        environmentType: environmentType
      }
    }
    

    Met deze code kan de toepassing de wachtrij vinden waar berichten worden verzonden.

  6. Sla het bestand main.bicep op.

  7. Open het bestand appService.bicep in de map deploy/modules .

  8. Voeg bovenaan het bestand appService.bicep nieuwe parameters toe voor de namen van het opslagaccount en de wachtrij:

    @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
    
  9. Werk de appServiceApp resource bij om de namen van het opslagaccount en de wachtrij door te geven aan de omgevingsvariabelen van de toepassing:

    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
            }
          ]
        }
      }
    }
    

Uw functiebranch doorvoeren en pushen

Voer uw wijzigingen door en push ze naar uw GitHub-opslagplaats door de volgende opdrachten uit te voeren in de Visual Studio Code-terminal:

Voer uw wijzigingen door en push ze naar uw Opslagplaats voor Azure-opslagplaatsen door de volgende opdrachten uit te voeren in de Visual Studio Code-terminal:

git add .
git commit -m "Add orders queue and associated configuration"
git push --set-upstream origin add-orders-queue

De functievertakking wordt gepusht naar een nieuwe vertakking, ook wel add-orders-queue genoemd, in uw externe opslagplaats.

Probeer de functiebranch samen te voegen naar het hoofd

U hebt geleerd waarom het niet raadzaam is om rechtstreeks naar de hoofdbranch te pushen. Hier probeert u deze richtlijn te verbreken, zodat u kunt zien hoe de beveiliging van uw hoofdvertakking voorkomt dat u per ongeluk uw wijzigingen naar een beveiligde vertakking pusht.

  1. Voer in de Visual Studio Code-terminal de volgende instructies uit om over te schakelen naar de hoofdvertakking en de wachtrijvertakking voor add-orders erin samen te voegen:

    git checkout main
    git merge add-orders-queue
    

    De opdracht werkte, maar u hebt de vertakking add-orders-queue samengevoegd in uw hoofdvertakking in alleen uw lokale Git-opslagplaats.

  2. Voer de volgende instructie uit om uw wijzigingen naar GitHub te pushen:

    git push
    

    U ziet dat uw push mislukt met een foutbericht dat er als volgt uitziet:

    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'
    

    Het foutbericht geeft aan dat pushen naar de hoofdbranch niet zijn toegestaan en dat u een pull-aanvraag moet gebruiken om de vertakking bij te werken.

  3. Maak de samenvoeging ongedaan door de volgende instructie uit te voeren:

    git reset --hard HEAD~1
    

    Met deze opdracht wordt aan uw lokale Git-opslagplaats doorgegeven dat de status van de hoofdbranch opnieuw moet worden ingesteld op de status van de hoofdbranch voordat de laatste doorvoering is samengevoegd en niet om uw wijzigingen op te slaan. De vertakking add-orders-queue wordt niet beïnvloed.

U hebt geleerd waarom het niet raadzaam is om rechtstreeks naar de hoofdbranch te pushen. Hier probeert u deze richtlijn te verbreken, zodat u kunt zien hoe het vertakkingsbeleid verhindert dat u per ongeluk uw wijzigingen naar een beveiligde vertakking pusht.

  1. Voer in de Visual Studio Code-terminal de volgende instructies uit om over te schakelen naar de hoofdvertakking en om de wachtrijvertakking voor invoegtoepassingen eraan samen te voegen:

    git checkout main
    git merge add-orders-queue
    

    De opdracht werkte, maar u hebt de vertakking add-orders-queue samengevoegd in uw hoofdvertakking in alleen uw lokale Git-opslagplaats.

  2. Voer de volgende instructie uit om uw wijzigingen naar Azure-opslagplaatsen te pushen:

    git push
    

    U ziet dat uw push mislukt met een foutbericht dat er als volgt uitziet:

    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'
    

    Het foutbericht geeft aan dat pushen naar de hoofdbranch niet zijn toegestaan en dat u een pull-aanvraag moet gebruiken om de vertakking bij te werken.

  3. Maak de samenvoeging ongedaan door de volgende instructie uit te voeren:

    git reset --hard HEAD~1
    

    Met deze opdracht wordt aan uw lokale Git-opslagplaats doorgegeven dat de status van de hoofdbranch opnieuw moet worden ingesteld op de status van de hoofdbranch voordat de laatste doorvoering is samengevoegd en niet om uw wijzigingen op te slaan. De vertakking add-orders-queue wordt niet beïnvloed.