Oefening: Beveilig uw hoofdbranch
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:
Selecteer Deze sjabloon gebruiken>Een nieuwe opslagplaats maken.
Voer een naam in voor uw nieuwe project, zoals speelgoedwebsite-beoordeling.
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.
Selecteer Opslagplaats maken op basis 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.
de sjabloon uitvoeren
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 speelgoedwebsite-beoordeling.
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.
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.
Selecteer eerst Codeen selecteer vervolgens het pictogram Kopiëren.
Open Visual Studio Code.
Open een Visual Studio Code-terminalvenster door Terminal>New Terminalte 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 Opslagplaatsen>Bestanden.
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 wilt gebruiken voor de opslagplaats en kies vervolgens Locatie van opslagplaats 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 in uw browser Instellingen.
Selecteer Vertakkingen.
Selecteer Voeg vertakkingsbeveiligingsregel toe.
Voer in het branchnaampatroon tekstvak hoofd-in.
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.
Selecteer Sta niet toe dat de bovenstaande instellingenworden omzeild.
Je selecteert deze instelling als voorbeeld om te laten zien hoe
git push
naarmain
verderop in deze oefening mislukt. In een productieomgeving wilt u mogelijk geen directe samenvoegingen beperken totmain
voor beheerders of eigenaren van opslagplaatsen.Selecteer onderaan de pagina 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>Branches.
Beweeg de muisaanwijzer over de hoofd- vertakking en selecteer de drie puntjes.
Selecteer Branchbeleid.
Wijzig in het venster Branch-beleid de instelling Een minimum aantal revisoren vereisen naar Aan.
Wijzig het minimale aantal beoordelaars naar 1en selecteer de optie Toestaan dat aanvragers hun eigen wijzigingen goedkeuren.
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
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 map deploy.
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@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 } } }
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.
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 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
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.
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.
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.
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.
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.
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.
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.