Oefening: uw hoofdvertakking beveiligen
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:
Selecteer Deze sjabloon>gebruiken. Maak een nieuwe opslagplaats.
Voer een naam in voor uw nieuwe project, zoals speelgoedwebsitebeoordeling.
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.
Selecteer Opslagplaats maken van sjabloon.
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:
Selecteer Aanmelden en accepteer de gebruiksvoorwaarden.
Selecteer uw Azure DevOps-organisatie op de pagina Nieuw project maken. Voer vervolgens een projectnaam in, zoals speelgoedwebsitebeoordeling.
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.
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.
Selecteer Code en selecteer vervolgens het pictogram Kopiëren .
Open Visual Studio Code.
Open een Visual Studio Code-terminalvenster door Terminal>New Terminal te selecteren. Het venster wordt meestal onderaan het scherm geopend.
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
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
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.
Selecteer Opslagplaatsbestanden>.
Selecteer Klonen.
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.
Selecteer Klonen in VS Code. Als u wordt gevraagd om Visual Studio Code te openen, selecteert u Openen.
Maak een map die u voor de opslagplaats wilt gebruiken en kies Opslagplaatslocatie selecteren.
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.
Visual Studio Code vraagt u om de opslagplaats te openen. Selecteer Openen.
Vertakkingsbeveiligingen toevoegen
Configureer uw Git-opslagplaats om directe pushes naar de hoofdbranch te voorkomen.
Selecteer Instellingen in uw browser.
Selecteer Vertakkingen.
Selecteer Vertakkingsbeveiligingsregel toevoegen.
Voer in het tekstvak Vertakkingsnaampatroon de hoofdtekst in.
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.
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 totmain
beheerders of eigenaren van opslagplaatsen.Selecteer Onder aan de pagina de optie 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.
Ga in uw browser naar Opslagplaatsen>vertakkingen.
Beweeg de muisaanwijzer over de hoofdbranch en selecteer de drie puntjes.
Selecteer Vertakkingsbeleid.
Wijzig in het venster Vertakkingsbeleid de instelling Minimum aantal revisoren vereisen in Aan.
Wijzig het minimale aantal revisoren in 1 en selecteer de aanvragers toestaan om hun eigen wijzigingsoptie goed te keuren.
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
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.
Open het bestand main.bicep in de implementatiemap .
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'
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 } } }
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.
Sla het bestand main.bicep op.
Open het bestand appService.bicep in de map deploy/modules .
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
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.
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.
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.
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.
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.
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.
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.