Konfigurowanie akcji usługi GitHub w celu utworzenia wystąpienia kontenera

Funkcja GitHub Actions to pakiet funkcji w usłudze GitHub do automatyzowania przepływów pracy tworzenia oprogramowania w tym samym miejscu, w którym przechowujesz kod i współpracujesz nad żądaniami ściągnięcia i problemami.

Użyj funkcji Deploy to Azure Container Instances GitHub Actions, aby zautomatyzować wdrażanie pojedynczego kontenera w usłudze Azure Container Instances. Akcja umożliwia ustawienie właściwości wystąpienia kontenera podobnego do tych w poleceniu az container create .

W tym artykule pokazano, jak skonfigurować przepływ pracy w repozytorium GitHub, który wykonuje następujące akcje:

  • Tworzenie obrazu z pliku Dockerfile
  • Wypychanie obrazu do rejestru kontenerów platformy Azure
  • Wdrażanie obrazu kontenera w wystąpieniu kontenera platformy Azure

W tym artykule przedstawiono dwa sposoby konfigurowania przepływu pracy:

Ważne

Funkcja GitHub Actions dla usługi Azure Container Instances jest obecnie dostępna w wersji zapoznawczej. Wersje zapoznawcze są udostępniane pod warunkiem udzielenia zgody na dodatkowe warunki użytkowania. Niektóre cechy funkcji mogą ulec zmianie, zanim stanie się ona ogólnie dostępna.

Wymagania wstępne

  • Konto usługi GitHub — utwórz konto, https://github.com jeśli jeszcze go nie masz.
  • Interfejs wiersza polecenia platformy Azure — możesz użyć usługi Azure Cloud Shell lub lokalnej instalacji interfejsu wiersza polecenia platformy Azure, aby wykonać kroki interfejsu wiersza polecenia platformy Azure. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
  • Rejestr kontenerów platformy Azure — jeśli go nie masz, utwórz rejestr kontenerów platformy Azure w warstwie Podstawowa przy użyciu interfejsu wiersza polecenia platformy Azure, witryny Azure Portal lub innych metod. Zanotuj grupę zasobów używaną do wdrożenia, która jest używana dla przepływu pracy usługi GitHub.

Konfigurowanie repozytorium

  • W przykładach w tym artykule użyj usługi GitHub, aby rozwidlić następujące repozytorium: https://github.com/Azure-Samples/acr-build-helloworld-node

    To repozytorium zawiera plik Dockerfile i pliki źródłowe, aby utworzyć obraz kontenera małej aplikacji internetowej.

    Zrzut ekranu przedstawiający przycisk rozwidlenia (wyróżniony) w serwisie GitHub

  • Upewnij się, że dla repozytorium włączono akcje. Przejdź do rozwidlenia repozytorium i wybierz pozycję Ustawienia> Actions. W obszarze Uprawnienia akcje upewnij się, że wybrano opcję Zezwalaj na wszystkie akcje .

Konfigurowanie przepływu pracy usługi GitHub

Tworzenie poświadczeń na potrzeby uwierzytelniania platformy Azure

W przepływie pracy usługi GitHub należy podać poświadczenia platformy Azure, aby uwierzytelnić się w interfejsie wiersza polecenia platformy Azure. Poniższy przykład tworzy jednostkę usługi z rolą Współautor w zakresie grupy zasobów dla rejestru kontenerów.

Najpierw pobierz identyfikator zasobu grupy zasobów. Zastąp nazwę grupy następującym poleceniem az group show :

groupId=$(az group show \
  --name <resource-group-name> \
  --query id --output tsv)

Użyj polecenia az ad sp create-for-rbac , aby utworzyć jednostkę usługi:

az ad sp create-for-rbac \
  --scope $groupId \
  --role Contributor \
  --sdk-auth

Dane wyjściowe są podobne do następujących:

{
  "clientId": "xxxx6ddc-xxxx-xxxx-xxx-ef78a99dxxxx",
  "clientSecret": "xxxx79dc-xxxx-xxxx-xxxx-aaaaaec5xxxx",
  "subscriptionId": "xxxx251c-xxxx-xxxx-xxxx-bf99a306xxxx",
  "tenantId": "xxxx88bf-xxxx-xxxx-xxxx-2d7cd011xxxx",
  "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
  "resourceManagerEndpointUrl": "https://management.azure.com/",
  "activeDirectoryGraphResourceId": "https://graph.windows.net/",
  "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
  "galleryEndpointUrl": "https://gallery.azure.com/",
  "managementEndpointUrl": "https://management.core.windows.net/"
}

Zapisz dane wyjściowe JSON, ponieważ są one używane w późniejszym kroku. Zwróć również uwagę na clientIdelement , który należy zaktualizować jednostkę usługi w następnej sekcji.

Aktualizacja uwierzytelniania rejestru

Zaktualizuj poświadczenia jednostki usługi platformy Azure, aby zezwolić na wypychanie i ściąganie dostępu do rejestru kontenerów. Ten krok umożliwia przepływowi pracy usługi GitHub używanie jednostki usługi do uwierzytelniania w rejestrze kontenerów oraz wypychania i ściągania obrazu platformy Docker.

Pobierz identyfikator zasobu rejestru kontenerów. Zastąp nazwę rejestru następującym poleceniem az acr show :

registryId=$(az acr show \
  --name <registry-name> \
  --resource-group <resource-group-name> \
  --query id --output tsv)

Użyj polecenia az role assignment create , aby przypisać rolę AcrPush, która zapewnia dostęp wypychania i ściągania do rejestru. Zastąp identyfikator klienta jednostki usługi:

az role assignment create \
  --assignee <ClientId> \
  --scope $registryId \
  --role AcrPush

Zapisywanie poświadczeń w repozytorium GitHub

  1. W interfejsie użytkownika usługi GitHub przejdź do rozwidlenia repozytorium i wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.

  2. Wybierz pozycję Nowy wpis tajny repozytorium, aby dodać następujące wpisy tajne:

Klucz tajny Wartość
AZURE_CREDENTIALS Całe dane wyjściowe JSON z kroku tworzenia jednostki usługi
REGISTRY_LOGIN_SERVER Nazwa serwera logowania rejestru (wszystkie małe litery). Przykład: myregistry.azurecr.io
REGISTRY_USERNAME Dane clientId wyjściowe z danych wyjściowych JSON z tworzenia jednostki usługi
REGISTRY_PASSWORD Dane clientSecret wyjściowe z danych wyjściowych JSON z tworzenia jednostki usługi
RESOURCE_GROUP Nazwa grupy zasobów użytej do określania zakresu jednostki usługi

Tworzenie pliku przepływu pracy

  1. W interfejsie użytkownika usługi GitHub wybierz pozycję Akcje.
  2. Wybierz opcję Skonfiguruj przepływ pracy samodzielnie.
  3. W obszarze Edytuj nowy plik wklej następującą zawartość YAML, aby zastąpić przykładowy kod. Zaakceptuj domyślną nazwę pliku main.ymllub podaj wybraną nazwę pliku.
  4. Wybierz pozycję Rozpocznij zatwierdzenie, opcjonalnie podaj krótkie i rozszerzone opisy zatwierdzenia, a następnie wybierz pozycję Zatwierdź nowy plik.
on: [push]
name: Linux_Container_Workflow

jobs:
    build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        # checkout the repo
        - name: 'Checkout GitHub Action'
          uses: actions/checkout@main
          
        - name: 'Login via Azure CLI'
          uses: azure/login@v1
          with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
        
        - name: 'Build and push image'
          uses: azure/docker-login@v1
          with:
            login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
            username: ${{ secrets.REGISTRY_USERNAME }}
            password: ${{ secrets.REGISTRY_PASSWORD }}
        - run: |
            docker build . -t ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}
            docker push ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}

        - name: 'Deploy to Azure Container Instances'
          uses: 'azure/aci-deploy@v1'
          with:
            resource-group: ${{ secrets.RESOURCE_GROUP }}
            dns-name-label: ${{ secrets.RESOURCE_GROUP }}${{ github.run_number }}
            image: ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}
            registry-login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
            registry-username: ${{ secrets.REGISTRY_USERNAME }}
            registry-password: ${{ secrets.REGISTRY_PASSWORD }}
            name: aci-sampleapp
            location: 'west us'

Weryfikowanie przepływu pracy

Po zatwierdzeniu pliku przepływu pracy zostanie wyzwolony przepływ pracy. Aby przejrzeć postęp przepływu pracy, przejdź do obszaru Przepływy pracy akcji>.

Wyświetlanie postępu przepływu pracy

Zobacz Wyświetlanie historii uruchamiania przepływu pracy, aby uzyskać informacje na temat wyświetlania stanu i wyników każdego kroku w przepływie pracy. Jeśli przepływ pracy nie zostanie ukończony, zobacz Wyświetlanie dzienników w celu zdiagnozowania błędów.

Po pomyślnym zakończeniu przepływu pracy uzyskaj informacje o wystąpieniu kontenera o nazwie aci-sampleapp , uruchamiając polecenie az container show . Zastąp nazwę grupy zasobów:

az container show \
  --resource-group <resource-group-name> \
  --name aci-sampleapp \
  --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
  --output table

Dane wyjściowe są podobne do następujących:

FQDN                                   ProvisioningState
---------------------------------      -------------------
aci-action01.westus.azurecontainer.io  Succeeded

Po aprowizacji wystąpienia przejdź do nazwy FQDN kontenera w przeglądarce, aby wyświetlić uruchomioną aplikację internetową.

Uruchamianie aplikacji internetowej w przeglądarce

Korzystanie z rozszerzenia Deploy to Azure

Alternatywnie użyj rozszerzenia Deploy to Azure w interfejsie wiersza polecenia platformy Azure, aby skonfigurować przepływ pracy. Polecenie az container app up w rozszerzeniu pobiera parametry wejściowe od Użytkownika, aby skonfigurować przepływ pracy do wdrożenia w usłudze Azure Container Instances.

Przepływ pracy utworzony przez interfejs wiersza polecenia platformy Azure jest podobny do przepływu pracy, który można utworzyć ręcznie przy użyciu usługi GitHub.

Dodatkowe wymagania wstępne

Oprócz wymagań wstępnych i konfiguracji repozytorium dla tego scenariusza należy zainstalować rozszerzenie Deploy to Azure dla interfejsu wiersza polecenia platformy Azure.

Uruchom polecenie az extension add, aby zainstalować rozszerzenie:

az extension add \
  --name deploy-to-azure

Aby uzyskać informacje na temat znajdowania, instalowania i zarządzania rozszerzeniami, zobacz Używanie rozszerzeń za pomocą interfejsu wiersza polecenia platformy Azure.

Uruchom polecenie az container app up

Aby uruchomić polecenie az container app up , podaj co najmniej:

  • Nazwa rejestru kontenerów platformy Azure, na przykład myregistry
  • Adres URL repozytorium GitHub, na przykład https://github.com/<your-GitHub-Id>/acr-build-helloworld-node

Przykładowe polecenie:

az container app up \
  --acr myregistry \
  --repository https://github.com/myID/acr-build-helloworld-node

Postęp polecenia

  • Po wyświetleniu monitu podaj poświadczenia usługi GitHub lub podaj osobisty token dostępu (PAT) usługi GitHub, który ma zakresy repozytorium i użytkownika w celu uwierzytelnienia przy użyciu konta usługi GitHub. Jeśli podasz poświadczenia usługi GitHub, polecenie utworzy dla Ciebie token dostępu. Postępuj zgodnie z dodatkowymi monitami, aby skonfigurować przepływ pracy.

  • Polecenie tworzy wpisy tajne repozytorium dla przepływu pracy:

    • Poświadczenia jednostki usługi dla interfejsu wiersza polecenia platformy Azure
    • Poświadczenia umożliwiające dostęp do rejestru kontenerów platformy Azure
  • Po zatwierdzeniu pliku przepływu pracy w repozytorium zostanie wyzwolony przepływ pracy.

Dane wyjściowe są podobne do następujących:

[...]
Checking in file github/workflows/main.yml in the GitHub repository myid/acr-build-helloworld-node
Creating workflow...
GitHub Action Workflow has been created - https://github.com/myid/acr-build-helloworld-node/runs/515192398
GitHub workflow completed.
Workflow succeeded
Your app is deployed at:  http://acr-build-helloworld-node.eastus.azurecontainer.io:8080/

Aby wyświetlić stan przepływu pracy i wyniki każdego kroku w interfejsie użytkownika usługi GitHub, zobacz Wyświetlanie historii uruchamiania przepływu pracy.

Weryfikowanie przepływu pracy

Przepływ pracy wdraża wystąpienie kontenera platformy Azure z bazową nazwą repozytorium GitHub, w tym przypadku acr-build-helloworld-node. Po pomyślnym zakończeniu przepływu pracy uzyskaj informacje o wystąpieniu kontenera o nazwie acr-build-helloworld-node , uruchamiając polecenie az container show . Zastąp nazwę grupy zasobów:

az container show \
  --resource-group <resource-group-name> \
  --name acr-build-helloworld-node \
  --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
  --output table

Dane wyjściowe są podobne do następujących:

FQDN                                                   ProvisioningState
---------------------------------                      -------------------
acr-build-helloworld-node.westus.azurecontainer.io     Succeeded

Po aprowizacji wystąpienia przejdź do nazwy FQDN kontenera w przeglądarce, aby wyświetlić uruchomioną aplikację internetową.

Czyszczenie zasobów

Zatrzymaj wystąpienie kontenera przy użyciu polecenia az container delete:

az container delete \
  --name <instance-name>
  --resource-group <resource-group-name>

Aby usunąć grupę zasobów i wszystkie zasoby w niej, uruchom polecenie az group delete :

az group delete \
  --name <resource-group-name>

Następne kroki

Przejrzyj witrynę GitHub Marketplace, aby uzyskać więcej akcji w celu zautomatyzowania przepływu pracy programowania