De implementatieactie voor Azure-web-apps gebruiken met Azure Stack Hub
U kunt GitHub Actions instellen om een web-app te implementeren in uw Azure Stack Hub-exemplaar. Hiermee kunt u continue integratie en implementatie voor uw app instellen. Dit artikel helpt u aan de slag te gaan met geautomatiseerde implementatie met behulp van GitHub Actions en Azure Stack Hub. U maakt een web-app en gebruikt het publicatieprofiel om de web-app te maken voor het hosten van uw app.
GitHub Actions zijn werkstromen die bestaan uit acties die automatisering rechtstreeks in uw codeopslagplaats mogelijk maken. U kunt de werkstromen activeren met gebeurtenissen in uw GitHub-ontwikkelingsproces. U kunt algemene DevOps-automatiseringstaken instellen, zoals testen, implementeren en continue integratie.
Deze voorbeeldwerkstroom bevat instructies voor:
- Uw service-principal maken en valideren
- Het publicatieprofiel voor uw web-app maken
- Een runtime-specifieke werkstroom toevoegen
- Een overeenkomende werkstroom toevoegen met web-app implementeren
Een service-principal maken
Een service-principal kan op rollen gebaseerd toegangsbeheer gebruiken om verbinding te maken met en te communiceren met resources. U hebt een service-principal met inzendertoegang en de kenmerken die in deze instructies zijn opgegeven, nodig voor gebruik met uw GitHub Actions.
Belangrijk
Als u een ontwikkelaar of gebruiker van Azure Stack Hub bent, bent u niet gemachtigd om een service-principal te maken. U moet cloudoperatorbevoegdheden hebben of dit principe aanvragen bij uw cloudoperator met behulp van de instructies in deze sectie.
De volgende codefragmenten zijn geschreven voor een Windows-computer met behulp van de PowerShell-prompt met Azure CLI. Als u CLI op een Linux-computer en bash gebruikt, verwijdert u de regelextensie of vervangt u deze door een \
.
Bereid de waarden voor van de volgende parameters die worden gebruikt om de service-principal te maken:
Parameter Voorbeeld Beschrijving endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Het eindpunt voor resourcebeheer. achtervoegsel opslag-eindpunt "orlando.azurestack.corp.microsoft.com" Het eindpuntachtervoegsel voor opslagaccounts. achtervoegsel-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Het dns-achtervoegsel van de Key Vault-service. endpoint-active-directory-graph-resource-id "https://graph.windows.net/" De resource-id voor Active Directory. endpoint-sql-management https://notsupported Het sql Server Management-eindpunt. Stel dit in op https://notsupported
profiel 2020-09-01-hybride Profiel dat moet worden gebruikt voor deze cloud. Open het opdrachtregelprogramma, zoals Windows PowerShell of Bash. Meld u aan bij Azure CLI met de volgende opdracht:
az login
Gebruik de
register
opdracht voor een nieuwe omgeving of deupdate
opdracht als u een bestaande omgeving gebruikt. Gebruik de volgende opdracht.az cloud register ` -n "AzureStackUser" ` --endpoint-resource-manager "https://management.<local>.<FQDN>" ` --suffix-storage-endpoint ".<local>.<FQDN>" ` --suffix-keyvault-dns ".vault.<local>.<FQDN>" ` --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ` --endpoint-sql-management https://notsupported ` --profile 2020-09-01-hybrid
Haal de abonnements-id en resourcegroep op die u wilt gebruiken voor de service-principal.
Maak de service-principal met behulp van de volgende opdracht met de abonnements-id en resourcegroep:
az ad sp create-for-rbac --name "myApp" --role contributor ` --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} ` --sdk-auth
Kopieer het resulterende JSON-object. U gebruikt het JSON-object om uw geheim te maken in uw GitHub-opslagplaats die uw actie bevat. Het JSON-object moet de volgende kenmerken hebben:
{ "clientId": <Application ID for the service principal>, "clientSecret": <Client secret for the service principal>, "subscriptionId": <Subscription ID for the service principal>, "tenantId": <Tenant ID for the service principal>, "activeDirectoryEndpointUrl": "https://login.microsoftonline.com/", "resourceManagerEndpointUrl": "https://management.<FQDN>", "activeDirectoryGraphResourceId": "https://graph.windows.net/", "sqlManagementEndpointUrl": "https://notsupported", "galleryEndpointUrl": "https://providers.<FQDN>:30016/", "managementEndpointUrl": "https://management.<FQDN>" }
Het publicatieprofiel voor de web-app maken
De blade Web-app maken openen
- Meld u aan bij uw Azure Stack Hub-portal.
- Selecteer Een resource>maken Web + Mobiele>web-app.
Uw web-app maken
- Selecteer Abonnement.
- Een resourcegroep maken of selecteren.
- Typ de Naam van uw app. De naam van de app wordt weergegeven in de URL voor uw app, bijvoorbeeld
yourappname.appservice.<region>.<FQDN>
- Selecteer de runtimestack voor uw app. De runtime moet overeenkomen met de werkstroom die u gebruikt voor uw publicatieprofiel.
- Selecteer het besturingssysteem (OS) waarop uw runtime en app worden gehost.
- Selecteer of typ de regio voor uw Azure Stack Hub-exemplaar.
- Selecteer het plan op basis van uw Azure Stack Hub-exemplaar, regio en app-besturingssysteem.
- Selecteer Controleren + maken.
- Controleer uw web-app. Selecteer Maken.
- Selecteer Ga naar resource.
- Selecteer Publicatieprofiel ophalen. Uw publicatieprofiel wordt gedownload en heet
<yourappname>.PublishSettings
. Het bestand bevat een XML met de doelwaarden van uw web-app. - Sla uw publicatieprofiel op zodat u het kunt openen wanneer u de geheimen voor uw opslagplaats maakt.
Uw geheimen toevoegen aan de opslagplaats
U kunt GitHub-geheimen gebruiken om gevoelige informatie te versleutelen die u in uw acties kunt gebruiken. U maakt een geheim voor uw service-principal en een ander geheim voor het publicatieprofiel van uw web-app. De actie gebruikt deze om u aan te melden bij uw Azure Stack Hub-exemplaar en uw app te bouwen naar het doel van de web-app.
- Open of maak een GitHub-opslagplaats. Als u hulp nodig hebt bij het maken van een opslagplaats in GitHub, vindt u instructies in de GitHub-documenten.
- Selecteer Instellingen.
- Selecteer Geheimen.
- Selecteer Nieuw opslagplaatsgeheim.
- Geef uw geheim
AZURE_CREDENTIALS
de naam . - Plak het JSON-object dat uw service-principal vertegenwoordigt.
- Selecteer Geheim toevoegen.
- Selecteer Nieuw opslagplaatsgeheim.
- Geef uw geheim
AZURE_WEBAPP_PUBLISH_PROFILE
de naam . - Open uw
<yourappname>.PublishSettings
in een teksteditor en kopieer en plak de XML in het geheim van de opslagplaats. - Selecteer Geheim toevoegen.
Een runtimewerkstroom toevoegen
Kies een sjabloon in de tabel voor de runtime van uw web-app.
Runtime Template DotNet dotnet.yml Node.js node.yml Java java_jar.yml Java java_war.yml Python python.yml PHP php.yml Docker docker.yml Plaats de sjabloon GitHub Actions werkstroommap in uw projectopslagplaats:
.github/workflows/<runtime.yml>
de werkstroommap bevat twee werkstromen.
De implementatieactie van de web-app toevoegen
Maak een tweede werkstroom met behulp van de yaml in deze sectie. In dit voorbeeld implementeert u een Python-web-app. U moet een installatieactie selecteren op basis van uw werkstroom. U vindt verwijzingen voor het instellen van acties voor verschillende runtimes in de tabel , Acties instellen voor verschillende runtimes, na de stappen die zijn gebruikt om de actie te maken.
Voorbeeld van GitHub Actions werkstroom
Open uw GitHub-opslagplaats. Als u uw web-app-toepassingsresources nog niet hebt toegevoegd, voegt u deze nu toe. In dit voorbeeld gebruik ik het voorbeeld Python Flask Hallo wereld en heb ik de bestanden Python
.gitignore
,app.py
enrequirements.txt
toegevoegd.Selecteer Acties.
Selecteer Nieuwe werkstroom.
- Als dit uw eerste werkstroom is, selecteert u Zelf een werkstroom instellen onder Een werkstroomsjabloon kiezen.
- Als u bestaande werkstromen hebt, selecteert u Nieuwe werkstroom>Zelf een werkstroom instellen.
Geef het bestand
workflow.yml
in het pad de naam .Kopieer en plak de werkstroom yml.
# .github/workflows/worfklow.yml on: push jobs: build-and-deploy: runs-on: ubuntu-latest steps: # checkout the repo - name: 'Checkout Github Action' uses: actions/checkout@main - name: Setup Python 3.6 uses: actions/setup-node@v1 with: python-version: '3.6' - name: 'create a virtual environment and install dependencies' run: | python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt - name: 'Run Azure webapp deploy action using publish profile credentials' uses: azure/webapps-deploy@v2 with: app-name: <YOURAPPNAME> publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Werk in workflow.yaml bij
<YOURAPPNAME>
met de naam van uw app.Selecteer Doorvoeren starten.
Voeg de doorvoertitel en optionele details toe en selecteer vervolgens Nieuw bestand doorvoeren.
Acties instellen voor verschillende runtimes
Als u app-code wilt bouwen in een specifieke, op taal gebaseerde omgeving, gebruikt u installatieacties:
Runtime | Acties instellen |
---|---|
DotNet | DotNet instellen |
Node.js | Knooppunt instellen |
Java | Java instellen |
Python | Python instellen |
Docker | docker-login |
Zodra de aanmeldingsactie is voltooid, kan de volgende set acties in de werkstroom taken uitvoeren zoals het bouwen, taggen en pushen van containers. Zie de documentatie voor de Azure-web-app-actie voor meer informatie.
Uw implementatie activeren
Wanneer de actie wordt uitgevoerd, controleert u of deze is uitgevoerd.
- Open uw GitHub-opslagplaats. U kunt de werkstroom activeren door naar de opslagplaats te pushen.
- Selecteer Acties.
- Selecteer de naam van de doorvoer onder Alle werkstromen. Beide werkstromen hebben hun status geregistreerd.
- Selecteer de naam van de taak voor de implementatie,
.github/workflows/workflow.yml
. - Vouw de secties uit om de retourwaarden voor uw werkstroomacties te bekijken. Zoek de URL voor uw geïmplementeerde web-app.
- Open een webbrowser en laad de URL.
Volgende stappen
- Zoek meer acties in de GitHub Marketplace.
- Meer informatie over algemene implementaties voor Azure Stack Hub
- Meer informatie over Azure Resource Manager-sjablonen gebruiken in Azure Stack Hub
- Bekijk het DevOps-patroon voor hybride cloud, DevOps-patroon