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:
- Konfigurowanie przepływu pracy usługi GitHub — utwórz przepływ pracy w repozytorium GitHub przy użyciu akcji Wdróż w usłudze Azure Container Instances i innych akcji.
- Użyj rozszerzenia interfejsu
az container app up
wiersza polecenia — użyj polecenia w rozszerzeniu Deploy to Azure w interfejsie wiersza polecenia platformy Azure . To polecenie usprawnia tworzenie przepływu pracy i wdrażania usługi GitHub.
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.
Upewnij się, że dla repozytorium włączono akcje. Przejdź do rozwidlenia repozytorium i wybierz pozycję Akcje ustawień>. 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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"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 clientId
element , 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
W interfejsie użytkownika usługi GitHub przejdź do rozwidlenia repozytorium i wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.
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
- W interfejsie użytkownika usługi GitHub wybierz pozycję Akcje.
- Wybierz opcję Skonfiguruj przepływ pracy samodzielnie.
- W obszarze Edytuj nowy plik wklej następującą zawartość YAML, aby zastąpić przykładowy kod. Zaakceptuj domyślną nazwę pliku
main.yml
lub podaj wybraną nazwę pliku. - 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>.
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ą.
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