Utilize a ação de implementação da aplicação web Azure com o Azure Stack Hub

Pode configurar GitHub Actions para implementar uma aplicação web na sua instância Azure Stack Hub. Isto permite-lhe configurar integração e implementação contínua para a sua aplicação. Este artigo irá ajudá-lo a levantar-se e a funcionar com uma implementação automatizada usando GitHub Actions e Azure Stack Hub. Você vai criar uma aplicação web e usar o perfil de publicação para criar a aplicação web para hospedar a sua aplicação.

GitHub As ações são fluxos de trabalho compostos por ações que permitem a automatização no seu repositório de código. Pode desencadear os fluxos de trabalho com eventos no seu processo de desenvolvimento GitHub. Pode definir tarefas comuns de automatização de DevOps, tais como testes, implementação e integração contínua.

Este fluxo de trabalho exemplo inclui:

  • Instruções para criar e validar o seu principal de serviço (SPN).
  • Instruções para criar o seu perfil de publicação de aplicações web
  • Adicionar um fluxo de trabalho específico para o tempo de execução
  • Adicionar um fluxo de trabalho correspondente com implementação de aplicativo web

Obter diretor de serviço

Um SPN fornece credenciais baseadas em funções para que os processos fora de Azure possam se conectar e interagir com recursos. Você precisará de um SPN com acesso ao contribuinte e os atributos especificados nestas instruções para usar com as suas Ações GitHub.

Como utilizador do Azure Stack Hub, não tem a permissão para criar o SPN. Terá de solicitar este princípio ao seu operador de nuvem. As instruções estão a ser fornecidas aqui para que possa criar o SPN se for um operador de nuvem. Ou se for um desenvolvedor, pode validar o SPN fornecido por um operador de nuvem.

O operador de nuvem terá de criar o SPN utilizando o Azure CLI.

Os seguintes fragmentos de código são escritos para uma máquina Windows utilizando o pedido PowerShell com Azure CLI. Se estiver a utilizar o CLI numa máquina Linux e bater, retire a extensão da linha ou substitua-a por um \ .

  1. Preparar os valores dos seguintes parâmetros utilizados para criar o SPN:

    Parâmetro Exemplo Descrição
    endpoint-recurso-manager "https://management.orlando.azurestack.corp.microsoft.com" O ponto final de gestão de recursos.
    sufixo-armazenamento-ponto final "orlando.azurestack.corp.microsoft.com" O sufixo final para contas de armazenamento.
    sufixo-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" O sufixo do serviço Key Vault.
    endpoint-active-directy-graph-id "https://graph.windows.net/" O ID de recurso do Active Directory.
    endpoint sql-management https://notsupported O ponto final de gestão do servidor sql. Deseteia isto para https://notsupported
    perfil 2020-09-01-híbrido Perfil para usar para esta nuvem.
  2. Abra a sua ferramenta de linha de comando, como Windows PowerShell ou Bash e inscreva-se. Utilize o seguinte comando:

    az login
    
  3. Utilize o register comando para um novo ambiente ou comando se estiver a utilizar um ambiente update existente. Utilize o seguinte comando.

    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
    
  4. Obtenha o seu ID de subscrição e grupo de recursos que pretende utilizar para o SPN.

  5. Crie o SPN com o seguinte comando com o ID de subscrição e grupo de recursos:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    

    Se não tiver privilégios de operador de nuvem, também pode iniciar sôs o seu sN fornecido pelo seu operador de nuvem. Vai precisar da identificação do cliente, do segredo e da identificação do seu inquilino. Com estes valores, pode utilizar os seguintes comandos Azure CLI para criar o objeto JSON que pode adicionar ao seu repositório GitHub como segredo.

    az login --service-principal -u "<client-id>" -p "<secret>" --tenant "<tenant-ID>" --allow-no-subscriptions
    az account show --sdk-auth
    
  6. Verifique o objeto JSON resultante. Você usará o objeto JSON para criar o seu segredo no seu GitHub repositório que contém a sua ação. O objeto JSON deve ter os seguintes atributos:

    {
      "clientId": <Application ID for the SPN>,
      "clientSecret": <Client secret for the SPN>,
      "subscriptionId": <Subscription ID for the SPN>,
      "tenantId": <Tenant ID for the SPN>,
      "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>"
    }
    

Crie o perfil de publicação de aplicações web

Abra a lâmina de aplicação web criar

  1. Inscreva-se no seu portal Azure Stack Hub.
  2. Selecione Criar umaWeb + MobileWeb App. Crie uma aplicação web no Azure Stack Hub

Para criar a sua aplicação web

  1. Selecione a sua Subscrição.
  2. Criar ou selecionar um Grupo de Recursos.
  3. Digite o Nome da sua aplicação. O nome da aplicação aparecerá no URL da sua aplicação, por exemplo, yourappname.appservice.<region>.<FQDN>
  4. Selecione a stack Runtime para a sua aplicação. O tempo de funcionaamento deve coincidir com o fluxo de trabalho utilizado para direcionar o seu perfil de publicação.
  5. Selecione o Sistema Operativo (OS) que irá hospedar o seu tempo de execução e aplicação.
  6. Selecione ou digite a Região para a sua instância Azure Stack Hub.
  7. Selecione o plano com base na sua instância Azure Stack Hub, região e app OS.
  8. Selecione Rever + Criar.
  9. Reveja a sua aplicação Web. Selecione Criar. Reveja a aplicação web no Azure Stack Hub
  10. Selecione Ir para recurso. Obtenha o perfil de publicação no Azure Stack Hub
  11. Selecione Obter o perfil de publicação. O seu perfil de publicação descarrega e está <yourappname>.PublishSettings nomeado. O ficheiro contém um XML com os valores-alvo da sua aplicação web.
  12. Guarde o seu perfil de publicação para que possa aceder ao mesmo quando criar os segredos para o seu repositório.

Adicione os seus segredos ao repositório

Pode usar GitHub segredos para encriptar informações confidenciais para usar nas suas ações. Criará um segredo para conter o seu SPN e outro segredo para conter o seu perfil de publicação de aplicações web para que a ação possa iniciar sessão no seu exemplo Azure Stack Hub e construir a sua aplicação para o alvo da aplicação web.

  1. Abra ou crie um repositório GitHub. Se precisar de orientação para criar um repositório em GitHub, pode encontrar instruções nos GitHub docs.
  2. Selecione Definições.
  3. Selecione Segredos.
  4. Selecione novo segredo do repositório. Adicione o segredo das suas Ações GitHub
  5. Diga o seu AZURE_CREDENTIALS segredo.
  6. Cole o objeto JSON que representa o seu SPN.
  7. Selecione Add secret (Adicionar segredo).
  8. Selecione novo segredo do repositório.
  9. Diga o seu AZURE_WEBAPP_PUBLISH_PROFILE segredo.
  10. Abra o seu <yourappname>.PublishSettings num editor de texto e, em seguida, copie e cole o XML no segredo do repositório.
  11. Selecione Add secret (Adicionar segredo).

Adicione um fluxo de trabalho de tempo de execução

  1. Escolha um modelo da tabela para o tempo de execução da sua aplicação web.

    Runtime Modelo
    DotNet dotnet.yml
    NodeJS node.yml
    Java java_jar.yml
    Java java_war.yml
    Python python.yml
    PHP php.yml
    Docker docker.yml
  2. Coloque o modelo GitHub diretório de fluxo de ação no repositório do seu projeto: .github/workflows/<runtime.yml> O seu diretório de fluxos de trabalho conterá dois fluxos de trabalho.

Adicione a ação de implementação da aplicação web

Crie um segundo fluxo de trabalho utilizando o yaml nesta secção. Neste exemplo, está a implementar uma aplicação web Python. Você precisaria de selecionar uma ação de configuração com base no seu fluxo de trabalho. Pode encontrar referências para configurar ações para vários tempos de funcionação na tabela, configurar ações para diferentes temposde execução, após os passos utilizados para criar a ação.

Exemplo GitHub fluxo de trabalho de ação

  1. Abra o seu repositório GitHub. Se ainda não adicionou os recursos da sua aplicação web, adicione-os agora. Neste exemplo, estou a usar a amostra Python Flask Hello World, e adicionei o Python , e app.pyrequirements.txt ficheiros.

    Exmaple do repo usando Python Flask com Azure Stack Hub

  2. Selecione Ações.

  3. Selecione novo fluxo de trabalho.

    • Se este for o seu primeiro fluxo de trabalho, selecione configurar um fluxo de trabalho em escolha um modelo de fluxo de trabalho.
    • Se tiver fluxos de trabalho existentes, selecione Novo fluxo de trabalhoCrie um fluxo de trabalho por si mesmo.
  4. No caminho, nomeie o workflow.yml ficheiro.

  5. Copiar e colar o fluxo de trabalho 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@master
    
        - 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 }}
    
  6. Na atualização workflow.yaml <YOURAPPNAME> com o nome da sua aplicação.

  7. Selecione Start commit (Iniciar consolidação).

  8. Adicione o título de compromisso e detalhes opcionais e, em seguida, selecione Comprometa novo ficheiro.

Ações de configuração para diferentes tempos de execução

Para criar código de aplicativo num ambiente específico baseado em linguagem, utilize ações de configuração:

Runtime Configurar ações
DotNet Setup DotNet
NodeJS Nó de configuração
Java Configuração Java
Python Configuração Python
Docker estivador-login

Uma vez feita a ação de login, o próximo conjunto de ações no fluxo de trabalho pode executar tarefas como construção, marcação e empurrar contentores. Para mais informações, consulte a documentação para a ação do Azure Webapp.

Desencadeie a sua implantação

Quando a ação for executada, verifique se foi executada com sucesso.

  1. Abra o seu repositório GitHub. Pode desencadear o fluxo de trabalho empurrando para o repositório.
  2. Selecione Ações.
  3. Selecione o nome do compromisso em Todos os fluxos de trabalho. Ambos os fluxos de trabalho registaram o seu estado. Reveja o estado da sua ação GitHub
  4. Selecione o nome do trabalho para a implantação, .github/workflows/workflow.yml .
  5. Expanda as secções para rever os valores de retorno das suas ações de fluxo de trabalho. Encontre o URL para a sua aplicação web implementada. Encontre o URL da sua aplicação web Azure Stack Hub
  6. Abra um navegador web e carregue o URL.

Passos seguintes