Samouczek: wdrażanie środowisk w ciągłej integracji/ciągłego wdrażania przy użyciu usług GitHub i Azure Deployment Environment

Z tego samouczka dowiesz się, jak zintegrować środowiska wdrażania platformy Azure z potokiem ciągłej integracji/ciągłego wdrażania. Możesz użyć dowolnego dostawcy GitOps, który obsługuje ciągłą integrację/ciągłe wdrażanie, na przykład GitHub Actions, Azure Arc, GitLab lub Jenkins.

Ciągła integracja i ciągłe dostarczanie (CI/CD) to podejście programistyczne, które pomaga zespołom zautomatyzować proces tworzenia, testowania i wdrażania zmian oprogramowania. Ciągła integracja/ciągłe wdrażanie umożliwia częstsze wydawanie zmian oprogramowania i większe zaufanie.

Używasz przepływu pracy, który zawiera trzy gałęzie: główne, deweloperskie i testowe.

  • Gałąź główna jest zawsze uważana za produkcyjną.
  • Gałęzie funkcji są tworzone z gałęzi głównej.
  • Żądania ściągnięcia są tworzone w celu scalenia gałęzi funkcji z gałęziami głównymi.

Ten przepływ pracy jest małym przykładem na potrzeby tego samouczka. Rzeczywiste przepływy pracy mogą być bardziej złożone.

Przed rozpoczęciem tego samouczka możesz zapoznać się z zasobami i pojęciami dotyczącymi środowisk wdrażania, przeglądając artykuł Kluczowe pojęcia dotyczące środowisk wdrażania platformy Azure.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Tworzenie i konfigurowanie centrum deweloperskiego
  • Tworzenie magazynu kluczy
  • Tworzenie i konfigurowanie repozytorium GitHub
  • Połączenie katalogu do centrum deweloperów
  • Konfigurowanie tożsamości wdrożenia
  • Konfigurowanie środowisk usługi GitHub
  • Testowanie potoku ciągłej integracji/ciągłego wdrażania

Wymagania wstępne

1. Tworzenie i konfigurowanie centrum deweloperskiego

W tej sekcji utworzysz centrum deweloperskie środowiska wdrażania platformy Azure i projekt z trzema typami środowisk: Tworzenie, testowanie i prod.

  • Typ środowiska Prod zawiera jedno środowisko produkcyjne.
  • Nowe środowisko jest tworzone w środowisku deweloperskim dla każdej gałęzi funkcji.
  • Nowe środowisko jest tworzone w obszarze Test dla każdego żądania ściągnięcia.

1.1 Konfigurowanie interfejsu wiersza polecenia platformy Azure

Aby rozpocząć, zaloguj się do platformy Azure. Uruchom następujące polecenie i postępuj zgodnie z monitami, aby ukończyć proces uwierzytelniania.

az login

Następnie zainstaluj rozszerzenie devcenter platformy Azure dla interfejsu wiersza polecenia platformy Azure.

az extension add --name devcenter --upgrade

Po zainstalowaniu bieżącego Microsoft.DevCenter rozszerzenia zarejestruj przestrzeń nazw.

az provider register --namespace Microsoft.DevCenter

Napiwek

W tym samouczku zapiszesz kilka wartości jako zmiennych środowiskowych do późniejszego użycia. Możesz również zarejestrować te wartości w innym miejscu, aby upewnić się, że są one dostępne w razie potrzeby.

Pobierz identyfikator użytkownika i ustaw go na zmienną środowiskową na później:

MY_AZURE_ID=$(az ad signed-in-user show --query id -o tsv)

Pobierz identyfikator subskrypcji dla bieżącej subskrypcji.

AZURE_SUBSCRIPTION_ID=$(az account show --query id --output tsv)

Pobierz identyfikator dzierżawy dla bieżącej dzierżawy.

AZURE_TENANT_ID=$(az account show --query tenantId --output tsv)

Ustaw następujące zmienne środowiskowe:

LOCATION="eastus"
AZURE_RESOURCE_GROUP=<resourceGroupName>
AZURE_DEVCENTER=<devcenterName>
AZURE_PROJECT=<projectName>
AZURE_KEYVAULT=<keyVaultName>

Uwaga

Musisz użyć globalnie unikatowej nazwy magazynu kluczy. W przeciwnym razie może zostać wyświetlony następujący błąd: Code: VaultAlreadyExists Message: The vault name 'mykeyvaultname' is already in use. Vault names are globally unique so it is possible that the name is already taken.

1.2. Tworzenie centrum deweloperskiego

Centrum deweloperów to kolekcja projektów i środowisk, które mają podobne ustawienia. Centra deweloperów zapewniają dostęp do katalogu szablonów i artefaktów, których można użyć do tworzenia środowisk. Centra deweloperów zapewniają również sposób zarządzania dostępem do środowisk i projektów.

Utwórz grupę zasobów.

az group create \
  --name $AZURE_RESOURCE_GROUP \
  --location $LOCATION

Utwórz nowe centrum deweloperskie.

az devcenter admin devcenter create \
  --name $AZURE_DEVCENTER \
  --identity-type SystemAssigned \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION

Poprzednie polecenie zwraca dane JSON. Zapisz wartości zmiennych id środowiskowych i identity.principalId jako zmienne środowiskowe do późniejszego użycia.

AZURE_DEVCENTER_ID=<id>
AZURE_DEVCENTER_PRINCIPAL_ID=<identity.principalId>

1.3 Przypisywanie roli właściciela tożsamości centrum deweloperskiego w subskrypcji

Centrum deweloperów musi mieć uprawnienia do przypisywania ról w subskrypcjach skojarzonych z typami środowiska.

Aby zmniejszyć niepotrzebną złożoność, w tym samouczku użyjesz jednej subskrypcji centrum deweloperskiego i wszystkich typów środowisk. W praktyce subskrypcje centrum deweloperów i docelowych wdrożeń prawdopodobnie będą oddzielnymi subskrypcjami z zastosowaniem różnych zasad.

az role assignment create \
  --scope /subscriptions/$AZURE_SUBSCRIPTION_ID \
  --role Owner \
  --assignee-object-id $AZURE_DEVCENTER_PRINCIPAL_ID \
  --assignee-principal-type ServicePrincipal

1.4. Tworzenie typów środowisk

Na poziomie centrum deweloperskiego typy środowisk definiują środowiska, które zespoły deweloperskie mogą tworzyć, takie jak tworzenie, testowanie, piaskownica, przedprodukcja lub produkcja.

Utwórz trzy nowe typy środowisk: Tworzenie, testowanie i Prod.

az devcenter admin environment-type create \
  --name Dev \
  --resource-group $AZURE_RESOURCE_GROUP \
  --dev-center $AZURE_DEVCENTER
az devcenter admin environment-type create \
  --name Test \
  --resource-group $AZURE_RESOURCE_GROUP \
  --dev-center $AZURE_DEVCENTER
az devcenter admin environment-type create \
  --name Prod \
  --resource-group $AZURE_RESOURCE_GROUP \
  --dev-center $AZURE_DEVCENTER

1.5 Tworzenie projektu

Projekt jest punktem dostępu dla zespołu deweloperów. Każdy projekt jest skojarzony z centrum deweloperów.

Tworzenie nowego projektu.

az devcenter admin project create \
  --name $AZURE_PROJECT \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --dev-center-id $AZURE_DEVCENTER_ID

Poprzednie polecenie zwraca dane JSON. id Zapisz wartość jako zmienną środowiskową do późniejszego użycia.

AZURE_PROJECT_ID=<id>

Przypisz sobie rolę Administracja projektu DevCenter w projekcie.

az role assignment create \
  --scope "$AZURE_PROJECT_ID" \
  --role "DevCenter Project Admin" \
  --assignee-object-id $MY_AZURE_ID \
  --assignee-principal-type User

1.6. Tworzenie typów środowisk projektu

Na poziomie projektu inżynierowie platformy określają, które typy środowisk są odpowiednie dla zespołu deweloperskiego.

Utwórz nowy typ środowiska projektu dla każdego typu środowiska utworzonego w centrum deweloperów.

az devcenter admin project-environment-type create \
  --name Dev \
  --roles "{\"b24988ac-6180-42a0-ab88-20f7382dd24c\":{}}" \
  --deployment-target-id /subscriptions/$AZURE_SUBSCRIPTION_ID \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --project $AZURE_PROJECT \
  --identity-type SystemAssigned \
  --status Enabled
az devcenter admin project-environment-type create \
  --name Test \
  --roles "{\"b24988ac-6180-42a0-ab88-20f7382dd24c\":{}}" \
  --deployment-target-id /subscriptions/$AZURE_SUBSCRIPTION_ID \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --project $AZURE_PROJECT \
  --identity-type SystemAssigned \
  --status Enabled
az devcenter admin project-environment-type create \
  --name Prod \
  --roles "{\"b24988ac-6180-42a0-ab88-20f7382dd24c\":{}}" \
  --deployment-target-id /subscriptions/$AZURE_SUBSCRIPTION_ID \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --project $AZURE_PROJECT \
  --identity-type SystemAssigned \
  --status Enabled

2. Tworzenie magazynu kluczy

W tej sekcji utworzysz nowy magazyn kluczy. Ten magazyn kluczy zostanie użyty w dalszej części samouczka, aby zapisać osobisty token dostępu z usługi GitHub.

az keyvault create \
  --name $AZURE_KEYVAULT \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --enable-rbac-authorization true

Ponownie zapisz dane id wyjściowe JSON poprzedniego polecenia jako zmienną środowiskową.

AZURE_KEYVAULT_ID=<id>

Nadaj sobie rolę Administracja istratora usługi Key Vault w nowym magazynie kluczy.

az role assignment create \
  --scope $AZURE_KEYVAULT_ID \
  --role "Key Vault Administrator" \
  --assignee-object-id $MY_AZURE_ID \
  --assignee-principal-type User

Przypisz tożsamość centrum deweloperskiego rolę użytkownika wpisów tajnych usługi Key Vault.

az role assignment create \
  --scope $AZURE_KEYVAULT_ID \
  --role "Key Vault Secrets User" \
  --assignee-object-id $AZURE_DEVCENTER_PRINCIPAL_ID \
  --assignee-principal-type ServicePrincipal

3. Tworzenie i konfigurowanie repozytorium GitHub

W tej sekcji utworzysz nowe repozytorium GitHub do przechowywania katalogu. Środowiska wdrażania platformy Azure obsługują repozytoria GitHub i Azure DevOps. W tym samouczku użyjesz usługi GitHub.

3.1 Tworzenie nowego repozytorium GitHub

W tym kroku utworzysz nowe repozytorium na koncie usługi GitHub, które ma wstępnie zdefiniowaną strukturę katalogów, gałęzie i pliki. Te elementy są generowane z przykładowego repozytorium szablonów.

  1. Użyj tego linku, aby wygenerować nowe repozytorium GitHub na podstawie przykładowego szablonu.

    Screenshot showing the GitHub create repository from template page.

  2. Jeśli nie masz płatnego konta usługi GitHub, ustaw repozytorium na Wartość Publiczna.

  3. Wybierz pozycję Utwórz repozytorium na podstawie szablonu.

  4. Na karcie Akcje zwróć uwagę, że akcja Utwórz środowisko kończy się niepowodzeniem. To zachowanie jest oczekiwane. Możesz przejść do następnego kroku.

3.2 Ochrona głównej gałęzi repozytorium

Ważne gałęzie można chronić, ustawiając reguły ochrony gałęzi. Reguły ochrony określają, czy współpracownicy mogą usuwać lub wymuszać wypychanie do gałęzi. Ustawiają również wymagania dotyczące wszystkich wypchnięć do gałęzi, takich jak przekazywanie testów stanu lub liniowa historia zatwierdzeń.

Uwaga

Chronione gałęzie są dostępne w repozytoriach publicznych za pomocą usługi GitHub Free i GitHub Free dla organizacji oraz w repozytoriach publicznych i prywatnych za pomocą usług GitHub Pro, GitHub Team, GitHub Enterprise Cloud i GitHub Enterprise Server. Aby uzyskać więcej informacji, zobacz Produkty usługi GitHub.

  1. Jeśli jeszcze nie jest otwarty, przejdź do strony głównej repozytorium.

  2. W obszarze nazwy repozytorium wybierz pozycję Ustawienia. Jeśli nie widzisz karty Ustawienia, wybierz menu rozwijane ..., a następnie wybierz pozycję Ustawienia.

    Screenshot showing the GitHub repository page with settings highlighted.

  3. W sekcji Kod i automatyzacja paska bocznego wybierz pozycję Gałęzie.

    Screenshot showing the settings page, with branches highlighted.

  4. W obszarze Reguły ochrony gałęzi wybierz pozycję Dodaj regułę ochrony gałęzi.

    Screenshot showing the branch protection rule page, with Add branch protection rule highlighted.

  5. W obszarze Wzorzec nazwy gałęzi wprowadź .main

    Screenshot showing the branch name pattern text box, with main highlighted.

  6. W obszarze Ochrona pasujących gałęzi wybierz pozycję Wymagaj żądania ściągnięcia przed scaleniem.

    Screenshot showing protect matching branches with Require a pull request before merging selected and highlighted.

  7. Opcjonalnie możesz włączyć więcej reguł ochrony.

  8. Wybierz pozycję Utwórz.

3.3. Konfigurowanie zmiennych repozytorium

Uwaga

Zmienne konfiguracji funkcji GitHub Actions są w wersji beta i mogą ulec zmianie.

  1. W sekcji Zabezpieczenia paska bocznego wybierz pozycję Wpisy tajne i zmienne, a następnie wybierz pozycję Akcje.

    Screenshot showing the Security section of the sidebar with Actions highlighted.

  2. Wybierz kartę Zmienne.

  3. Dla każdego elementu w tabeli:

    1. Wybierz pozycję Nowa zmienna repozytorium.
    2. W polu Nazwa wprowadź nazwę zmiennej.
    3. W polu Wartość wprowadź wartość opisaną w tabeli.
    4. Wybierz pozycję Dodaj zmienną.
    Nazwa zmiennej Wartość zmiennej
    AZURE_DEVCENTER Nazwa centrum deweloperskiego
    AZURE_PROJECT Nazwa projektu
    AZURE_CATALOG Ustaw wartość "Środowiska"
    AZURE_CATALOG_ITEM Ustaw wartość "FunctionApp"
    AZURE_SUBSCRIPTION_ID Identyfikator subskrypcji platformy Azure
    AZURE_TENANT_ID Identyfikator dzierżawy platformy Azure

    Screenshot showing the variables page with the variables table.

3.4 Tworzenie osobistego tokenu dostępu usługi GitHub

Następnie utwórz szczegółowe osobiste tokeny dostępu, aby umożliwić centrum deweloperów środowisk wdrażania platformy Azure łączenie się z repozytorium i korzystanie z katalogu środowiska.

Uwaga

Szczegółowe osobiste tokeny dostępu są obecnie w wersji beta i mogą ulec zmianie. Aby zostawić opinię, zobacz dyskusję na temat opinii.

  1. W prawym górnym rogu dowolnej strony na GitHub.com wybierz swoje zdjęcie profilowe, a następnie wybierz pozycję Ustawienia.

  2. Na lewym pasku bocznym wybierz pozycję Ustawienia dewelopera.

  3. Na pasku bocznym po lewej stronie w obszarze Osobiste tokeny dostępu wybierz pozycję Szczegółowe tokeny, a następnie wybierz pozycję Generuj nowy token.

    Screenshot showing the GitHub personal access token options, with Fine-grained tokens and Generate new token highlighted.

  4. Na stronie Nowy szczegółowe osobiste tokeny dostępu w obszarze Nazwa tokenu wprowadź nazwę tokenu.

  5. W obszarze Wygaśnięcie wybierz wygaśnięcie tokenu.

  6. Wybierz użytkownika usługi GitHub w obszarze Właściciel zasobu.

  7. W obszarze Dostęp do repozytorium wybierz pozycję Tylko wybierz repozytoria , a następnie na liście rozwijanej Wybrane repozytoria wyszukaj i wybierz utworzone repozytorium.

    Screenshot showing GitHub repository access options, with Only select repositories highlighted.

  8. W obszarze Uprawnienia wybierz pozycję Uprawnienia repozytorium i zmień wartość Zawartość na Tylko do odczytu.

    Screenshot showing GitHub repository permissions with Contents highlighted.

  9. Wybierz pozycję Generuj token.

  10. Skopiuj i zapisz osobisty token dostępu teraz. Nie można go ponownie wyświetlić.

3.5 Zapisywanie osobistego tokenu dostępu do magazynu kluczy

Następnie zapisz osobisty token dostępu jako wpis tajny magazynu kluczy o nazwie pat.

az keyvault secret set \
    --name pat \
    --vault-name $AZURE_KEYVAULT \
    --value <personalAccessToken>

4. Połączenie katalogu do centrum deweloperów

W środowiskach wdrażania platformy Azure wykaz to repozytorium zawierające zestaw definicji środowiska. Elementy wykazu składają się z szablonu infrastruktury jako kodu (IaC) i pliku środowiska, który działa jako manifest. Szablon definiuje środowisko, a plik środowiska zawiera metadane dotyczące szablonu. Zespoły deweloperów używają definicji środowiska z katalogu do tworzenia środowisk.

Szablon użyty do utworzenia repozytorium GitHub zawiera katalog w folderze Środowiska .

Dodawanie wykazu do centrum deweloperów

W poniższym poleceniu zastąp < Organization/Repository > ciąg nazwą organizacji i repozytorium GitHub.

az devcenter admin catalog create \
    --name Environments \
    --resource-group $AZURE_RESOURCE_GROUP \
    --dev-center $AZURE_DEVCENTER \
    --git-hub path="/Environments" branch="main" secret-identifier="https://$AZURE_KEYVAULT.vault.azure.net/secrets/pat" uri="https://github.com/< Organization/Repository >.git"

5. Konfigurowanie tożsamości wdrożenia

OpenID Połączenie z funkcją GitHub Actions to metoda uwierzytelniania, która używa tokenów krótkotrwałych w celu zapewnienia bezpieczeństwa ze wzmocnionymi zabezpieczeniami. Jest to zalecany sposób uwierzytelniania funkcji GitHub Actions na platformie Azure.

Możesz również uwierzytelnić jednostkę usługi bezpośrednio przy użyciu wpisu tajnego, ale nie jest to możliwe w tym samouczku.

5.1 Generowanie tożsamości wdrożenia

  1. Zarejestruj aplikacje i jednostki usługi firmy Microsoft dla każdego z trzech typów środowisk.

    Utwórz aplikację Microsoft Entra dla deweloperów.

    az ad app create --display-name "$AZURE_PROJECT-Dev"
    

    To polecenie zwraca dane JSON z id identyfikatorem używanym podczas tworzenia poświadczeń federacyjnych przy użyciu interfejsu API programu Graph oraz (nazywanego również identyfikatorem appId klienta).

    Ustaw następujące zmienne środowiskowe:

    DEV_AZURE_CLIENT_ID=<appId>
    DEV_APPLICATION_ID=<id>
    

    Powtórz dla testu.

    az ad app create --display-name "$AZURE_PROJECT-Test"
    
    TEST_AZURE_CLIENT_ID=<appId>
    TEST_APPLICATION_ID=<id>
    

    I dla Prod.

    az ad app create --display-name "$AZURE_PROJECT-Prod"
    
    PROD_AZURE_CLIENT_ID=<appId>
    PROD_APPLICATION_ID=<id>
    
  2. Utwórz jednostkę usługi dla każdej aplikacji.

    Uruchom następujące polecenie, aby utworzyć nową jednostkę usługi dla deweloperów.

     az ad sp create --id $DEV_AZURE_CLIENT_ID
    

    To polecenie generuje dane wyjściowe JSON z inną id wartością i będzie używane w następnym kroku.

    Ustaw następujące zmienne środowiskowe:

    DEV_SERVICE_PRINCIPAL_ID=<id>
    

    Powtórz dla testu.

     az ad sp create --id $TEST_AZURE_CLIENT_ID
    
    TEST_SERVICE_PRINCIPAL_ID=<id>
    

    I dla Prod.

     az ad sp create --id $PROD_AZURE_CLIENT_ID
    
    PROD_SERVICE_PRINCIPAL_ID=<id>
    
  3. Uruchom następujące polecenia, aby utworzyć nowe poświadczenia tożsamości federacyjnej dla każdej aplikacji usługi Active Directory.

    W każdym z trzech następujących poleceń zastąp ciąg < Organization/Repository > nazwą organizacji i repozytorium GitHub.

    Utwórz poświadczenie tożsamości federacyjnej dla dewelopera.

    az rest --method POST \
        --uri "https://graph.microsoft.com/beta/applications/$DEV_APPLICATION_ID/federatedIdentityCredentials" \
        --body '{"name":"ADEDev","issuer":"https://token.actions.githubusercontent.com","subject":"repo:< Organization/Repository >:environment:Dev","description":"Dev","audiences":["api://AzureADTokenExchange"]}'
    

    W przypadku testowania.

    az rest --method POST \
        --uri "https://graph.microsoft.com/beta/applications/$TEST_APPLICATION_ID/federatedIdentityCredentials" \
        --body '{"name":"ADETest","issuer":"https://token.actions.githubusercontent.com","subject":"repo:< Organization/Repository >:environment:Test","description":"Test","audiences":["api://AzureADTokenExchange"]}'
    

    I dla Prod.

    az rest --method POST \
        --uri "https://graph.microsoft.com/beta/applications/$PROD_APPLICATION_ID/federatedIdentityCredentials" \
        --body '{"name":"ADEProd","issuer":"https://token.actions.githubusercontent.com","subject":"repo:< Organization/Repository >:environment:Prod","description":"Prod","audiences":["api://AzureADTokenExchange"]}'
    

5.2 Przypisywanie ról do tożsamości wdrożenia

  1. Przypisz każdą tożsamość wdrożenia rolę Czytelnik w projekcie.

    az role assignment create \
        --scope "$AZURE_PROJECT_ID" \
        --role Reader \
        --assignee-object-id $DEV_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
    az role assignment create \
        --scope "$AZURE_PROJECT_ID" \
        --role Reader \
        --assignee-object-id $TEST_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
    az role assignment create \
        --scope "$AZURE_PROJECT_ID" \
        --role Reader \
        --assignee-object-id $PROD_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
  2. Przypisz każdą tożsamość wdrożenia rolę użytkownika Środowiska wdrażania do odpowiedniego typu środowiska.

    az role assignment create \
        --scope "$AZURE_PROJECT_ID/environmentTypes/Dev" \
        --role "Deployment Environments User" \
        --assignee-object-id $DEV_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
    az role assignment create \
        --scope "$AZURE_PROJECT_ID/environmentTypes/Test" \
        --role "Deployment Environments User" \
        --assignee-object-id $TEST_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
    az role assignment create \
        --scope "$AZURE_PROJECT_ID/environmentTypes/Prod" \
        --role "Deployment Environments User" \
        --assignee-object-id $PROD_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    

6. Konfigurowanie środowisk usługi GitHub

Za pomocą środowisk GitHub można konfigurować środowiska z regułami ochrony i wpisami tajnymi. Zadanie przepływu pracy, które odwołuje się do środowiska, musi przestrzegać wszelkich reguł ochrony środowiska przed uruchomieniem lub uzyskaniem dostępu do wpisów tajnych środowiska.

Tworzenie środowisk deweloperskich, testowych i prod mapowanych na typy środowisk w projekcie Środowiska wdrażania platformy Azure.

Uwaga

Środowiska, wpisy tajne środowiska i reguły ochrony środowiska są dostępne w repozytoriach publicznych dla wszystkich produktów. Aby uzyskać dostęp do środowisk, wpisów tajnych środowiska i gałęzi wdrażania w repozytoriach prywatnych lub wewnętrznych , należy użyć usługi GitHub Pro, zespołu GitHub lub usługi GitHub Enterprise. Aby uzyskać dostęp do innych reguł ochrony środowiska w repozytoriach prywatnych lub wewnętrznych , należy użyć usługi GitHub Enterprise. Aby uzyskać więcej informacji, zobacz Produkty usługi GitHub.

6.1 Tworzenie środowiska deweloperskiego

  1. W usłudze GitHub przejdź do strony głównej repozytorium.

  2. W obszarze nazwy repozytorium wybierz pozycję Ustawienia. Jeśli nie widzisz karty Ustawienia, wybierz menu rozwijane ..., a następnie wybierz pozycję Ustawienia.

  3. Na lewym pasku bocznym wybierz pozycję Środowiska.

  4. Wybierz pozycję Nowe środowisko i wprowadź wartość Dev jako nazwę środowiska, a następnie wybierz pozycję Konfiguruj środowisko.

    Screenshot showing the Environments Add pane, with the environment name Dev, and Configure Environment highlighted.

  5. W obszarze Wpisy tajne środowiska wybierz pozycję Dodaj wpis tajny i wprowadź AZURE_CLIENT_ID w polu Nazwa.

    Screenshot showing the Environment Configure Dev pane, with Add secret highlighted.

  6. W polu Wartość wprowadź identyfikator klienta (appId) dla utworzonej wcześniej aplikacji *Dev**Microsoft Entra (zapisanej jako zmienna $DEV_AZURE_CLIENT_ID środowiskowa).

    Screenshot of the Add secret box with the name AZURE CLIENT ID, the value set to an ID number, and add secret highlighted.

  7. Wybierz przycisk Add secret (Dodaj wpis tajny).

6.2. Tworzenie środowiska testowego

Wróć do strony środowiska głównego, wybierając pozycję Środowiska na lewym pasku bocznym.

  1. Wybierz pozycję Nowe środowisko i wprowadź ciąg Test dla nazwy środowiska, a następnie wybierz pozycję Konfiguruj środowisko.

  2. W obszarze Wpisy tajne środowiska wybierz pozycję Dodaj wpis tajny i wprowadź AZURE_CLIENT_ID w polu Nazwa.

  3. W polu Wartość wprowadź identyfikator klienta (appId) dla utworzonej wcześniej aplikacji Test Microsoft Entra (zapisanej jako zmienna $TEST_AZURE_CLIENT_ID środowiskowa).

  4. Wybierz przycisk Add secret (Dodaj wpis tajny).

6.3 Tworzenie środowiska Prod

Po raz kolejny wróć do strony głównych środowisk, wybierając pozycję Środowiska na lewym pasku bocznym

  1. Wybierz pozycję Nowe środowisko i wprowadź ciąg Prod jako nazwę środowiska, a następnie wybierz pozycję Konfiguruj środowisko.

  2. W obszarze Wpisy tajne środowiska wybierz pozycję Dodaj wpis tajny i wprowadź AZURE_CLIENT_ID w polu Nazwa.

  3. W polu Wartość wprowadź identyfikator klienta (appId) dla utworzonej wcześniej aplikacji Prod Microsoft Entra (zapisanej jako zmienna $PROD_AZURE_CLIENT_ID środowiskowa).

  4. Wybierz przycisk Add secret (Dodaj wpis tajny).

Następnie ustaw się jako wymagany recenzent dla tego środowiska. Podczas próby wdrożenia w usłudze Prod funkcja GitHub Actions czeka na zatwierdzenie przed rozpoczęciem. Gdy zadanie oczekuje na zatwierdzenie, ma stan Oczekiwanie. Jeśli zadanie nie zostanie zatwierdzone w ciągu 30 dni, automatycznie zakończy się niepowodzeniem.

Aby uzyskać więcej informacji na temat środowisk i wymaganych zatwierdzeń, zobacz Używanie środowisk do wdrożenia.

  1. Wybierz pozycję Wymagane recenzenci.

  2. Wyszukaj i wybierz użytkownika usługi GitHub. Możesz wprowadzić maksymalnie sześć osób lub zespołów. Aby kontynuować, tylko jeden z wymaganych recenzentów musi zatwierdzić zadanie.

  3. Wybierz pozycję Zapisz reguły ochrony.

Na koniec skonfiguruj main jako gałąź wdrożenia:

  1. Z listy rozwijanej Gałęzie wdrożenia wybierz pozycję Wybrane gałęzie.

  2. Wybierz pozycję Dodaj regułęgałęzi wdrożenia i wprowadź main wzorzec nazwy gałęzi.

  3. Wybierz Dodaj regułę.

7. Testowanie potoku ciągłej integracji/ciągłego wdrażania

W tej sekcji wprowadzisz pewne zmiany w repozytorium i przetestujesz potok ciągłej integracji/ciągłego wdrażania.

7.1 Klonowanie repozytorium

  1. W terminalu przejdź do folderu, w którym chcesz sklonować repozytorium lokalnie.

  2. Sklonuj repozytorium. Pamiętaj, aby zastąpić < Organization/Repository > w poniższym poleceniu nazwą organizacji i repozytorium GitHub.

    git clone https://github.com/< Organization/Repository >.git
    
  3. Przejdź do sklonowanego katalogu.

    cd <repository>
    
  4. Następnie utwórz nową gałąź i opublikuj ją zdalnie.

    git checkout -b feature1
    
    git push -u origin feature1
    

    Nowe środowisko jest tworzone na platformie Azure specyficzne dla tej gałęzi.

  5. W usłudze GitHub przejdź do strony głównej nowo utworzonego repozytorium.

  6. W obszarze nazwy repozytorium wybierz pozycję Akcje.

    Powinien zostać wyświetlony nowy przepływ pracy Tworzenie środowiska.

7.2 Wprowadź zmianę w kodzie

  1. Otwórz sklonowane lokalnie repozytorium w programie VS Code.

  2. W programie ADE. Folder samouczka , wprowadź zmianę w pliku.

  3. Zapisz zmianę.

7.3 Wypychanie zmian w celu zaktualizowania środowiska

  1. Przygotuj zmiany i wypchnij do feature1 gałęzi.

    git add .
    git commit -m '<commit message>'
    git push
    
  2. Na stronie Akcje repozytorium zostanie wyświetlony nowy przepływ pracy środowiska aktualizacji.

7.4. Tworzenie żądania ściągnięcia

  1. Utwórz żądanie main <- feature1ściągnięcia usługi GitHub.

  2. Na stronie Akcje repozytorium zobaczysz, że nowy przepływ pracy jest uruchamiany w celu utworzenia środowiska specyficznego dla żądania ściągnięcia przy użyciu typu środowiska testowego.

7.5 Scal żądanie ściągnięcia

  1. W usłudze GitHub przejdź do utworzonego żądania ściągnięcia.

  2. Scal żądanie ściągnięcia.

    Zmiany są publikowane w środowisku produkcyjnym, a środowiska żądań ściągnięcia i gałęzi są usuwane.

Czyszczenie zasobów

Jeśli nie planujesz korzystać z żadnych utworzonych zasobów, usuń je, aby nie ponosić żadnych dodatkowych opłat. Jeśli przykładowa aplikacja została wdrożona w innej grupie zasobów, warto powtórzyć poniższe kroki.

Aby usunąć zasoby przy użyciu witryny Azure Portal:

  1. Wybierz przycisk menu w lewym górnym rogu, a następnie wybierz pozycję Grupy zasobów.

  2. Z listy wybierz utworzoną grupę zasobów.

  3. Wybierz pozycję Usuń grupę zasobów.

  4. Wpisz nazwę grupy zasobów. Następnie wybierz Usuń.

Aby usunąć zasoby przy użyciu interfejsu wiersza polecenia platformy Azure, wprowadź następujące polecenie:

az group delete --name <my-dev-center-rg>

Należy pamiętać, że usunięcie grupy zasobów spowoduje usunięcie wszystkich zawartych w niej zasobów.