Konfigurera en GitHub-åtgärd för att skapa en containerinstans
GitHub Actions är en uppsättning funktioner i GitHub för att automatisera dina arbetsflöden för programvaruutveckling på samma plats som du lagrar kod och samarbetar med pull-begäranden och problem.
Använd GitHub Actions för att distribuera till Azure Container Instances för att automatisera distributionen av en enda container till Azure Container Instances. Med åtgärden kan du ange egenskaper för en containerinstans som liknar dem i kommandot az container create .
Den här artikeln visar hur du konfigurerar ett arbetsflöde på en GitHub-lagringsplats som utför följande åtgärder:
- Skapa en avbildning från en Dockerfile
- Skicka avbildningen till ett Azure-containerregister
- Distribuera containeravbildningen till en Azure-containerinstans
Den här artikeln visar två sätt att konfigurera arbetsflödet:
- Konfigurera GitHub-arbetsflöde – Skapa ett arbetsflöde i en GitHub-lagringsplats med åtgärden Distribuera till Azure Container Instances och andra åtgärder.
- Använd CLI-tillägget – Använd
az container app up
kommandot i tillägget Distribuera till Azure i Azure CLI. Det här kommandot effektiviserar skapandet av GitHub-arbetsflödet och distributionsstegen.
Viktigt!
GitHub Actions för Azure Container Instances är för närvarande i förhandsversion. Förhandsversioner är tillgängliga för dig under förutsättning att du godkänner de kompletterande användningsvillkoren. Vissa aspekter av funktionen kan ändras innan den är allmänt tillgänglig (GA).
Förutsättningar
- GitHub-konto – Skapa ett konto på https://github.com om du inte redan har ett.
- Azure CLI – Du kan använda Azure Cloud Shell eller en lokal installation av Azure CLI för att slutföra Azure CLI-stegen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
- Azure-containerregister – Om du inte har något skapar du ett Azure-containerregister på Basic-nivån med hjälp av Azure CLI, Azure-portalen eller andra metoder. Anteckna resursgruppen som används för distributionen, som används för GitHub-arbetsflödet.
Konfigurera lagringsplats
För exemplen i den här artikeln använder du GitHub för att förgrena följande lagringsplats: https://github.com/Azure-Samples/acr-build-helloworld-node
Den här lagringsplatsen innehåller en Dockerfile och källfiler för att skapa en containeravbildning av en liten webbapp.
Se till att Åtgärder är aktiverade för lagringsplatsen. Gå till din förgrenade lagringsplats och välj Inställningar>åtgärder. I Behörigheter för åtgärder kontrollerar du att Tillåt alla åtgärder har valts.
Konfigurera GitHub-arbetsflöde
Skapa autentiseringsuppgifter för Azure-autentisering
I GitHub-arbetsflödet måste du ange Azure-autentiseringsuppgifter för att autentisera till Azure CLI. I följande exempel skapas ett huvudnamn för tjänsten med rollen Deltagare begränsad till resursgruppen för containerregistret.
Hämta först resurs-ID:t för resursgruppen. Ersätt namnet på din grupp i följande az group show-kommando :
groupId=$(az group show \
--name <resource-group-name> \
--query id --output tsv)
Använd az ad sp create-for-rbac för att skapa tjänstens huvudnamn:
az ad sp create-for-rbac \
--scope $groupId \
--role Contributor \
--sdk-auth
Utdata liknar följande:
{
"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/"
}
Spara JSON-utdata eftersom det används i ett senare steg. Anteckna även , clientId
som du behöver uppdatera tjänstens huvudnamn i nästa avsnitt.
Uppdatering för registerautentisering
Uppdatera autentiseringsuppgifterna för Azure-tjänstens huvudnamn för att tillåta push- och pull-åtkomst till containerregistret. Det här steget gör att GitHub-arbetsflödet kan använda tjänstens huvudnamn för att autentisera med containerregistret och push-överföra och hämta en Docker-avbildning.
Hämta resurs-ID:t för containerregistret. Ersätt namnet på registret i följande az acr show-kommando :
registryId=$(az acr show \
--name <registry-name> \
--resource-group <resource-group-name> \
--query id --output tsv)
Använd az role assignment create för att tilldela AcrPush-rollen, vilket ger push- och pull-åtkomst till registret. Ersätt klient-ID:t för tjänstens huvudnamn:
az role assignment create \
--assignee <ClientId> \
--scope $registryId \
--role AcrPush
Spara autentiseringsuppgifter på GitHub-lagringsplatsen
I GitHub-användargränssnittet navigerar du till din förgrenade lagringsplats och väljer Säkerhetshemligheter > > och variabler Åtgärder.
Välj Ny lagringsplatshemlighet för att lägga till följande hemligheter:
Hemlig | Värde |
---|---|
AZURE_CREDENTIALS |
Hela JSON-utdata från steget för att skapa tjänstens huvudnamn |
REGISTRY_LOGIN_SERVER |
Inloggningsservernamnet för ditt register (alla gemener). Exempel: myregistry.azurecr.io |
REGISTRY_USERNAME |
clientId Från JSON-utdata från skapandet av tjänstens huvudnamn |
REGISTRY_PASSWORD |
clientSecret Från JSON-utdata från skapandet av tjänstens huvudnamn |
RESOURCE_GROUP |
Namnet på resursgruppen som du använde för att begränsa tjänstens huvudnamn |
Skapa arbetsflödesfil
- I GitHub-användargränssnittet väljer du Åtgärder.
- Välj konfigurera ett arbetsflöde själv.
- I Redigera ny fil klistrar du in följande YAML-innehåll för att skriva över exempelkoden. Acceptera standardfilnamnet
main.yml
eller ange ett filnamn som du väljer. - Välj Starta incheckning, ange även korta och utökade beskrivningar av incheckningen och välj Checka in ny fil.
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'
Verifiera arbetsflöde
När du har checkat in arbetsflödesfilen utlöses arbetsflödet. Om du vill granska arbetsflödets förlopp går du till Åtgärdsarbetsflöden>.
Mer information om hur du visar status och resultat för varje steg i arbetsflödet finns i Visa arbetsflödeskörningshistorik . Om arbetsflödet inte slutförs läser du Visa loggar för att diagnostisera fel.
När arbetsflödet har slutförts hämtar du information om containerinstansen med namnet aci-sampleapp genom att köra kommandot az container show . Ersätt namnet på resursgruppen:
az container show \
--resource-group <resource-group-name> \
--name aci-sampleapp \
--query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
--output table
Utdata liknar följande:
FQDN ProvisioningState
--------------------------------- -------------------
aci-action01.westus.azurecontainer.io Succeeded
När instansen har etablerats går du till containerns FQDN i webbläsaren för att visa webbappen som körs.
Använda Distribuera till Azure-tillägg
Du kan också använda tillägget Distribuera till Azure i Azure CLI för att konfigurera arbetsflödet. Kommandot az container app up
i tillägget tar indataparametrar från dig för att konfigurera ett arbetsflöde för distribution till Azure Container Instances.
Arbetsflödet som skapas av Azure CLI liknar det arbetsflöde som du kan skapa manuellt med GitHub.
Ytterligare förutsättningar
Förutom förutsättningarna och lagringsplatsen för det här scenariot måste du installera tillägget Distribuera till Azure för Azure CLI.
Kör kommandot az extension add för att installera tillägget:
az extension add \
--name deploy-to-azure
Information om hur du hittar, installerar och hanterar tillägg finns i Använda tillägg med Azure CLI.
Kör az container app up
Om du vill köra kommandot az container app up anger du minst:
- Namnet på ditt Azure-containerregister, till exempel myregistry
- URL:en till din GitHub-lagringsplats, till exempel
https://github.com/<your-GitHub-Id>/acr-build-helloworld-node
Exempel-kommando:
az container app up \
--acr myregistry \
--repository https://github.com/myID/acr-build-helloworld-node
Kommandots förlopp
När du uppmanas till det anger du dina GitHub-autentiseringsuppgifter eller anger en personlig åtkomsttoken för GitHub (PAT) som har lagringsplats och användaromfattningar för att autentisera med ditt GitHub-konto. Om du anger GitHub-autentiseringsuppgifter skapar kommandot en PAT åt dig. Följ ytterligare uppmaningar för att konfigurera arbetsflödet.
Kommandot skapar lagringsplatshemligheter för arbetsflödet:
- Autentiseringsuppgifter för tjänstens huvudnamn för Azure CLI
- Autentiseringsuppgifter för åtkomst till Azure-containerregistret
När kommandot checkar in arbetsflödesfilen på lagringsplatsen utlöses arbetsflödet.
Utdata liknar följande:
[...]
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/
Information om hur du visar arbetsflödesstatus och resultat för varje steg i GitHub-användargränssnittet finns i Visa arbetsflödeskörningshistorik.
Verifiera arbetsflöde
Arbetsflödet distribuerar en Azure-containerinstans med basnamnet för din GitHub-lagringsplats, i det här fallet acr-build-helloworld-node. När arbetsflödet har slutförts hämtar du information om containerinstansen med namnet acr-build-helloworld-node genom att köra kommandot az container show . Ersätt namnet på resursgruppen:
az container show \
--resource-group <resource-group-name> \
--name acr-build-helloworld-node \
--query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
--output table
Utdata liknar följande:
FQDN ProvisioningState
--------------------------------- -------------------
acr-build-helloworld-node.westus.azurecontainer.io Succeeded
När instansen har etablerats går du till containerns FQDN i webbläsaren för att visa webbappen som körs.
Rensa resurser
Stoppa behållarinstansen med kommandot az container delete:
az container delete \
--name <instance-name>
--resource-group <resource-group-name>
Om du vill ta bort resursgruppen och alla resurser i den kör du kommandot az group delete :
az group delete \
--name <resource-group-name>
Nästa steg
Bläddra till GitHub Marketplace för fler åtgärder för att automatisera ditt arbetsflöde för utveckling