Oefening: Beveilig uw hoofdbranch

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 hoofdtak van uw opslagplaats.
  • Maak een lokale functiebranch voor uw wijziging.
  • Probeer uw featurebranch samen te voegen met main.

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.

de sjabloon uitvoeren

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

  1. Selecteer Deze sjabloon gebruiken>Een nieuwe opslagplaats maken.

    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 speelgoedwebsite-beoordeling.

  3. Selecteer de optie Openbare.

    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 op basis van sjabloon.

    Schermopname van de GitHub-interface waarop de pagina voor het maken van de opslagplaats 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.

de sjabloon uitvoeren

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 speelgoedwebsite-beoordeling.

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

  3. Selecteer Projectaanmaken.

    Het duurt even voordat de sjabloon wordt uitgevoerd. Er wordt automatisch een pijplijn en een Bicep-bestand aangemaakt, die u in latere oefeningen zult gebruiken.

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

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 eerst Codeen selecteer vervolgens het pictogram Kopiëren.

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

  2. Open Visual Studio Code.

  3. Open een Visual Studio Code-terminalvenster door Terminal>New Terminalte 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 Opslagplaatsen>Bestanden.

    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 wilt gebruiken voor de opslagplaats en kies vervolgens Locatie van opslagplaats 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 in uw browser Instellingen.

  2. Selecteer Vertakkingen.

  3. Selecteer Voeg vertakkingsbeveiligingsregel toe.

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

  4. Voer in het branchnaampatroon tekstvak hoofd-in.

  5. Selecteer Een pull-aanvraag vereisen voordat usamenvoegt.

    Wis Vereis goedkeuringen. Normaal gesproken selecteert u deze optie. In dit voorbeeld gaat u echter uw eigen pull-verzoek samenvoegen, maar de optie Goedkeuringen vereisen voorkomt dat u dit doet.

  6. Selecteer Sta niet toe dat de bovenstaande instellingenworden omzeild.

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

  7. Selecteer onderaan de pagina 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>Branches.

  2. Beweeg de muisaanwijzer over de hoofd- vertakking en selecteer de drie puntjes.

  3. Selecteer Branchbeleid.

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

  4. Wijzig in het venster Branch-beleid de instelling Een minimum aantal revisoren vereisen naar Aan.

  5. Wijzig het minimale aantal beoordelaars naar 1en selecteer de optie Toestaan dat aanvragers hun eigen wijzigingen goedkeuren.

    Schermopname van Azure DevOps met de pagina met vertakkingsbeleid voor de hoofdvertakking.

    Notitie

    Hier schakelt u de optie in om de aanvragers toestaan hun eigen wijzigingen goed te keuren. In deze oefeningen werk je alleen, dus je moet zowel je wijzigingen maken als goedkeuren. Maar in een echte teamomgeving wilt u deze optie mogelijk niet inschakelen.

Een lokale feature branch 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 map deploy.

    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@2023-05-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 definitie van de appService module 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 het opslagaccount en de wachtrijnamen:

    @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@2024-04-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 Azure Repos repository 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 feature branch wordt gepusht naar een nieuwe vertakking met de naam add-orders-queuein uw externe opslagplaats.

Probeer de feature branch samen te voegen in 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 add-orders-queue vertakking erin samen te voegen:

    git checkout main
    git merge add-orders-queue
    

    De opdracht werkte, maar u hebt de add-orders-wachtrij vertakking samengevoegd in uw hoofdvertakking alleen in 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 pushes naar de hoofdvertakking niet zijn toegestaan en dat u een pull request 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 dit commando vertelt u uw lokale Git-repository dat de main branch moet worden teruggezet naar de staat van voor de laatste commit en dat uw wijzigingen niet worden opgeslagen. 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 terminal van Visual Studio Code de volgende opdrachten uit om over te schakelen naar de hoofdtak en de add-orders-queue-tak daarin te mergen:

    git checkout main
    git merge add-orders-queue
    

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

  2. Voer het volgende commando uit om uw wijzigingen naar Azure Repos 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'
    

    De foutmelding geeft aan dat push-activiteiten naar de hoofdbranch niet toegestaan zijn en dat u een pull request moet gebruiken om de branch bij te werken.

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

    git reset --hard HEAD~1
    

    Met deze opdracht zet u de status van uw lokale Git-opslagplaats terug naar die van de hoofdbranch voordat de laatste doorvoering werd samengevoegd, zonder uw wijzigingen op te slaan. De branch add-orders-queue wordt niet beïnvloed.