Compartilhar via


Tutorial: Implantar no Azure Functions usando o Jenkins

Importante

Embora muitos serviços do Azure tenham plug-ins Jenkins, a maioria desses plug-ins encerrou o suporte em 29 de fevereiro de 2024. A CLI do Azure é a maneira recomendada no momento de integrar o Jenkins aos serviços do Azure. Para obter mais informações, consulte o artigo plug-ins do Jenkins para o Azure.

O Azure Functions é um serviço de computação sem servidor. Usando o Azure Functions, você pode executar código sob demanda sem provisionar ou gerenciar a infraestrutura. Este tutorial mostra como implantar uma função Java no Azure Functions usando o plug-in do Azure Functions.

Pré-requisitos

Exibir o código-fonte

O código-fonte usado para este tutorial está localizado no repositório GitHub do Visual Studio China.

Criar uma função Java

Para criar uma função Java com a pilha de execução do Java, use o portal do Azure ou a CLI do Azure.

As etapas a seguir mostram como criar uma função Java usando a CLI do Azure:

  1. Crie um grupo de recursos, substituindo o marcador <resource_group> pelo nome do seu grupo de recursos.

    az group create --name <resource_group> --location eastus
    
  2. Crie uma conta de armazenamento do Azure, substituindo os espaços reservados pelos valores apropriados.

    az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS    
    
  3. Crie o aplicativo de funções de teste, substituindo os marcadores pelos valores apropriados.

    az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
    

Preparar o servidor Jenkins

As etapas a seguir explicam como preparar o servidor Jenkins:

  1. Implantar um servidor Jenkins no Azure. Se você ainda não tiver uma instância do servidor Jenkins instalada, o artigo Criar um servidor Jenkins no Azure orientará você durante o processo.

  2. Entre na instância do Jenkins com SSH.

  3. Na instância do Jenkins, instale a CLI do Az, versão 2.0.67 ou superior.

  4. Instale o maven usando o seguinte comando:

    sudo apt install -y maven
    
  5. Na instância do Jenkins, instale as Ferramentas Principais do Azure Functions emitindo os seguintes comandos em um prompt de terminal:

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    cat /etc/apt/sources.list.d/dotnetdev.list
    sudo apt-get update
    sudo apt-get install azure-functions-core-tools-3
    
  6. O Jenkins precisa de um principal de serviço do Azure para autenticar e acessar recursos do Azure. Consulte a Implantação no Serviço de Aplicativo do Azure para obter instruções passo a passo.

  7. Verifique se o plug-in de Credenciais está instalado.

    1. No menu, selecione Gerenciar Jenkins.

    2. Em Configuração do Sistema, selecione Gerenciar plug-in.

    3. Selecione a aba Instalados.

    4. No campo filtro , insira credentials.

    5. Verifique se o plug-in de credenciais está instalado. Caso contrário, você precisará instalá-lo na guia Disponível .

    O Plug-in de Credenciais precisa ser instalado.

  8. No menu, selecione Gerenciar Jenkins.

  9. Em Segurança, selecione Gerenciar Credenciais.

  10. Em Credenciais, selecione (global).

  11. No menu, selecione Adicionar Credenciais.

  12. Insira os seguintes valores para sua entidade de serviço do Microsoft Azure:

    • Tipo: selecione o valor: nome de usuário com senha.
    • Nome de usuário: especifique o appId do principal de serviço criado.
    • Senha: especifique o password (segredo) do principal do serviço.
    • ID: especifique o identificador de credencial, como azuresp.
  13. Selecione OK.

Faça um fork do repositório de amostra no GitHub

  1. Faça login no repositório GitHub para o aplicativo de exemplo de ímpar ou par.

  2. No canto superior direito do GitHub, escolha Fork.

  3. Siga as instruções para selecionar sua conta do GitHub e finalizar o fork.

Criar um Pipeline do Jenkins

Nesta seção, você criará o Pipeline do Jenkins.

  1. No painel do Jenkins, crie um Pipeline.

  2. Habilite Preparar um ambiente para a execução.

  3. Na seção Pipeline-Definition>, selecione o script pipeline do SCM.

  4. Insira a URL do fork do GitHub e o caminho do script ("doc/resources/jenkins/JenkinsFile") para usar no exemplo jenkinsFile.

     node {
     withEnv(['AZURE_SUBSCRIPTION_ID=99999999-9999-9999-9999-999999999999',
             'AZURE_TENANT_ID=99999999-9999-9999-9999-999999999999']) {
         stage('Init') {
             cleanWs()
             checkout scm
         }
    
         stage('Build') {
             sh 'mvn clean package'
         }
    
         stage('Publish') {
             def RESOURCE_GROUP = '<resource_group>' 
             def FUNC_NAME = '<function_app>'
             // login Azure
             withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
             sh '''
                 az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
                 az account set -s $AZURE_SUBSCRIPTION_ID
             '''
             }
             sh 'cd $PWD/target/azure-functions/odd-or-even-function-sample && zip -r ../../../archive.zip ./* && cd -'
             sh "az functionapp deployment source config-zip -g $RESOURCE_GROUP -n $FUNC_NAME --src archive.zip"
             sh 'az logout'
             }
         }
     }
    

Criar e implementar

Agora é hora de executar a tarefa Jenkins.

  1. Primeiro, obtenha a chave de autorização por meio das instruções no artigo de associações e gatilhos HTTP do Azure Functions .

  2. No navegador, insira a URL do aplicativo. Substitua os espaços reservados pelos valores apropriados e especifique um valor numérico para <input_number> como entrada para a função Java.

    https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>
    
  3. Você verá resultados semelhantes à saída de exemplo a seguir (em que um número ímpar - 365 - foi usado como um teste):

    The number 365 is Odd.
    

Limpar os recursos

Se você não quiser continuar a usar este aplicativo, exclua os recursos criados com a seguinte etapa:

az group delete -y --no-wait -n <resource_group>

Próximas etapas