Entrega contínua usando ações do GitHub

Você pode usar um fluxo de trabalho de Ações do GitHub para definir um fluxo de trabalho para criar e implantar código automaticamente em seu aplicativo de função no Azure Functions.

Um arquivo YAML (.yml) que define a configuração do fluxo de trabalho é mantido no /.github/workflows/ caminho do repositório. Esta definição contém as ações e parâmetros que compõem o fluxo de trabalho, que é específico para a linguagem de desenvolvimento de suas funções. Um fluxo de trabalho de Ações do GitHub para Funções executa as seguintes tarefas, independentemente do idioma:

  1. Configure o ambiente.
  2. Crie o projeto de código.
  3. Implante o pacote em um aplicativo de função no Azure.

A ação Azure Functions lida com a implantação em um aplicativo de função existente no Azure.

Você pode criar um arquivo de configuração de fluxo de trabalho para sua implantação manualmente. Você também pode gerar o arquivo a partir de um conjunto de modelos específicos do idioma de uma destas maneiras:

  • No portal do Azure
  • Com a CLI do Azure
  • A partir do seu repositório GitHub

Se você não quiser criar seu arquivo YAML manualmente, selecione um método diferente na parte superior do artigo.

Pré-requisitos

  • CLI do Azure, ao desenvolver localmente. Você também pode usar a CLI do Azure no Azure Cloud Shell.

Gerar credenciais de implantação

Como o GitHub Actions usa seu perfil de publicação para acessar seu aplicativo de função durante a implantação, primeiro você precisa obter seu perfil de publicação e armazená-lo com segurança como um segredo do GitHub.

Importante

O perfil de publicação é uma credencial valiosa que permite o acesso aos recursos do Azure. Certifique-se de que transporta e armazena sempre de forma segura. No GitHub, o perfil de publicação só deve ser armazenado em segredos do GitHub.

Faça o download do seu perfil de publicação

Para baixar o perfil de publicação do seu aplicativo de função:

  1. Selecione a página Visão geral do aplicativo de função e, em seguida, selecione Obter perfil de publicação.

    Download publish profile

  2. Salve e copie o conteúdo do arquivo.

Adicione o segredo do GitHub

  1. No GitHub, vá para o seu repositório.

  2. Aceda a Definições.

  3. Selecione Segredos e variáveis > Ações.

  4. Selecione Novo segredo do repositório.

  5. Adicione um novo segredo com o nome AZURE_FUNCTIONAPP_PUBLISH_PROFILE e o valor definido para o conteúdo do arquivo de perfil de publicação.

  6. Selecione Add secret (Adicionar segredo).

O GitHub agora pode se autenticar em seu aplicativo de função no Azure.

Criar o fluxo de trabalho a partir de um modelo

A melhor maneira de criar manualmente uma configuração de fluxo de trabalho é começar a partir do modelo oficialmente suportado.

  1. Escolha Windows ou Linux para garantir que você obtenha o modelo para o sistema operacional correto.

    Implantações para uso runs-on: windows-latestdo Windows .

  2. Copie o modelo específico do idioma do repositório de ações do Azure Functions usando o seguinte link:

  3. Atualize o parâmetro com o env.AZURE_FUNCTIONAPP_NAME nome do recurso do aplicativo de função no Azure. Opcionalmente, talvez seja necessário atualizar o parâmetro que define a versão de idioma usada pelo seu aplicativo, como DOTNET_VERSION para C#.

  4. Adicione este novo arquivo YAML no caminho em /.github/workflows/ seu repositório.

Criar a configuração do fluxo de trabalho no portal

Quando você usa o portal para habilitar as Ações do GitHub, o Functions cria um arquivo de fluxo de trabalho com base na pilha de aplicativos e o confirma no repositório do GitHub no diretório correto.

O portal obtém automaticamente seu perfil de publicação e o adiciona aos segredos do GitHub para seu repositório.

Durante a criação do aplicativo de função

Você pode começar rapidamente com as Ações do GitHub por meio da guia Implantação ao criar uma função no portal do Azure. Para adicionar um fluxo de trabalho de Ações do GitHub ao criar um novo aplicativo de função:

  1. No portal do Azure, selecione Implantação no fluxo Criar Aplicativo de Função.

    Screenshot of Deployment option in Functions menu.

  2. Habilite a Implantação Contínua se quiser que cada atualização de código acione um envio por push de código para o portal do Azure.

  3. Insira sua organização, repositório e ramificação do GitHub.

    Screenshot of GitHub user account details.

  4. Conclua a configuração do seu aplicativo de função. Seu repositório GitHub agora inclui um novo arquivo de fluxo de trabalho no /.github/workflows/.

Para um aplicativo de função existente

Você também pode adicionar Ações do GitHub a um aplicativo de função existente. Para adicionar um fluxo de trabalho de Ações do GitHub a um aplicativo de função existente:

  1. Navegue até à sua aplicação de funções no portal do Azure.

  2. Selecione Centro de Implantação.

  3. Em Continuous Deployment (CI / CD), selecione GitHub. Você verá uma mensagem padrão, Criando com ações do GitHub.

  4. Insira sua organização, repositório e ramificação do GitHub.

  5. Selecione Visualizar arquivo para ver o arquivo de fluxo de trabalho que será adicionado ao repositório do GitHub no github/workflows/.

  6. Selecione Salvar para adicionar o arquivo de fluxo de trabalho ao repositório.

Adicionar configuração de fluxo de trabalho ao repositório

Você pode usar o az functionapp deployment github-actions add comando para gerar um arquivo de configuração de fluxo de trabalho a partir do modelo correto para seu aplicativo de função. O novo arquivo YAML é então armazenado no local correto (/.github/workflows/) no repositório do GitHub fornecido, enquanto o arquivo de perfil de publicação do seu aplicativo é adicionado aos segredos do GitHub no mesmo repositório.

  1. Execute este az functionapp comando, substituindo os valores githubUser/githubRepo, MyResourceGroupe MyFunctionapp:

    az functionapp deployment github-actions add --repo "githubUser/githubRepo" -g MyResourceGroup -n MyFunctionapp --login-with-github
    

    Este comando usa um método interativo para recuperar um token de acesso pessoal para sua conta do GitHub.

  2. Na janela do terminal, você verá algo como a seguinte mensagem:

    Please navigate to https://github.com/login/device and enter the user code XXXX-XXXX to activate and retrieve your GitHub personal access token.
    
  3. Copie o código exclusivo XXXX-XXXX , navegue até https://github.com/login/devicee insira o código copiado. Depois de inserir seu código, você verá algo como a seguinte mensagem:

    Verified GitHub repo and branch
    Getting workflow template using runtime: java
    Filling workflow template with name: func-app-123, branch: main, version: 8, slot: production, build_path: .
    Adding publish profile to GitHub
    Fetching publish profile with secrets for the app 'func-app-123'
    Creating new workflow file: .github/workflows/master_func-app-123.yml
    
  4. Vá para o repositório GitHub e selecione Ações. Verifique se o fluxo de trabalho foi executado.

Criar o arquivo de configuração do fluxo de trabalho

Você pode criar o arquivo de configuração de fluxo de trabalho do GitHub Actions a partir dos modelos do Azure Functions diretamente do repositório do GitHub.

  1. No GitHub, vá para o seu repositório.

  2. Selecione Ações e Novo fluxo de trabalho.

  3. Pesquise funções.

    Screenshot of search for GitHub Actions functions templates.

  4. Nos fluxos de trabalho do aplicativo de funções exibidas criados pelo Microsoft Azure, localize aquele que corresponde ao seu idioma de código e selecione Configurar.

  5. No arquivo YAML recém-criado, atualize o parâmetro com o env.AZURE_FUNCTIONAPP_NAME nome do recurso do aplicativo de função no Azure. Opcionalmente, talvez seja necessário atualizar o parâmetro que define a versão de idioma usada pelo seu aplicativo, como DOTNET_VERSION para C#.

  6. Verifique se o novo arquivo de fluxo de trabalho está sendo salvo e /.github/workflows/ selecione Confirmar alterações....

Atualizar uma configuração de fluxo de trabalho

Se, por algum motivo, você precisar atualizar ou alterar uma configuração de fluxo de trabalho existente, basta navegar até o local em seu repositório, abrir o /.github/workflows/ arquivo YAML específico, fazer as alterações necessárias e, em seguida, confirmar as atualizações no repositório.

Exemplo: arquivo de configuração do fluxo de trabalho

O exemplo de modelo a seguir usa a versão 1 do e a functions-actionpublish profile para autenticação. O modelo depende do idioma escolhido e do sistema operacional no qual seu aplicativo de função é implantado:

Se o seu aplicativo funcional for executado no Linux, selecione Linux.

name: Deploy DotNet project to Azure Function App

on:
  [push]

env:
  AZURE_FUNCTIONAPP_NAME: 'your-app-name'   # set this to your function app name on Azure
  AZURE_FUNCTIONAPP_PACKAGE_PATH: '.'       # set this to the path to your function app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'                   # set this to the dotnet version to use (e.g. '2.1.x', '3.1.x', '5.0.x')

jobs:
  build-and-deploy:
    runs-on: windows-latest
    environment: dev
    steps:
    - name: 'Checkout GitHub Action'
      uses: actions/checkout@v3

    - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: 'Resolve Project Dependencies Using Dotnet'
      shell: pwsh
      run: |
        pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
        dotnet build --configuration Release --output ./output
        popd

    - name: 'Run Azure Functions Action'
      uses: Azure/functions-action@v1
      id: fa
      with:
        app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
        package: '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output'
        publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}

Ação do Azure Functions

A ação Azure Functions (Azure/azure-functions) define como seu código é publicado em um aplicativo de função existente no Azure ou em um slot específico em seu aplicativo.

Parâmetros

Os seguintes parâmetros são mais comumente usados com esta ação:

Parâmetro Explicação
nome do aplicativo (Obrigatório) O nome do seu aplicativo de função.
nome do slot (Opcional) O nome de um slot de implantação específico no qual você deseja implantar. O slot já deve existir em seu aplicativo de função. Quando não especificado, o código é implantado no slot ativo.
publicar-perfil (Opcional) O nome do segredo do GitHub que contém seu perfil de publicação.

Os seguintes parâmetros também são suportados, mas são usados apenas em casos específicos:

Parâmetro Explicação
embalagem (Opcional) Define um subcaminho no repositório a partir do qual publicar. Por padrão, esse valor é definido como , o .que significa que todos os arquivos e pastas no repositório GitHub são implantados.
respeito-pom-xml (Opcional) Usado apenas para funções Java. Se é necessário que o artefato de implantação do seu aplicativo seja derivado do arquivo pom.xml. Ao implementar aplicativos de função Java, você deve definir esse parâmetro como e definido package como true.. Por padrão, esse parâmetro é definido como , o que significa que o parâmetro deve apontar para o package local do artefato do seu aplicativo, como false./target/azure-functions/
respeito-funcignore (Opcional) Se o GitHub Actions honra seu arquivo .funcignore para excluir arquivos e pastas definidos nele. Defina esse valor como quando o repositório tiver um arquivo .funcignore e você quiser usá-lo para excluir caminhos e arquivos, como true configurações do editor de texto, .vscode/, ou um ambiente virtual Python (.venv/). A predefinição é false.
scm-do-build-during-deployment (Opcional) Se o site de implantação do Serviço de Aplicativo (Kudu) executa operações de pré-implantação. O site de implantação do seu aplicativo de função pode ser encontrado em https://<APP_NAME>.scm.azurewebsites.net/. Altere essa configuração para true quando você precisar controlar as implantações no Kudu em vez de resolver as dependências no fluxo de trabalho de Ações do GitHub. O valor predefinido é false. Para obter mais informações, consulte a configuração SCM_DO_BUILD_DURING_DEPLOYMENT .
enable-oryx-build (Opcional) Se o site de implantação do Kudu resolve as dependências do projeto usando o Oryx. Defina como true quando você deseja usar o Oryx para resolver as dependências do projeto usando uma compilação remota em vez do fluxo de trabalho Ações do GitHub. Quando true, você também deve definir scm-do-build-during-deployment como true. O valor predefinido é false.

Considerações

Tenha em mente as seguintes considerações ao usar a ação do Azure Functions:

  • Ao usar as Ações do GitHub, o código é implantado em seu aplicativo de função usando a implantação Zip para o Azure Functions.

  • As credenciais exigidas pelo GitHub para conexão com o Azure para implantação são armazenadas como Segredos em seu repositório GitHub e acessadas na implantação como secrets.<SECRET_NAME>.

  • A maneira mais fácil de as Ações do GitHub se autenticarem com o Azure Functions para implantação é usando um perfil de publicação. Você também pode autenticar usando uma entidade de serviço. Para saber mais, consulte este repositório de ações do GitHub.

  • As ações para configurar o ambiente e executar uma compilação são geradas a partir dos modelos e são específicas do idioma.

  • Os modelos usam env elementos para definir configurações exclusivas para sua compilação e implantação.

Próximos passos