Menu Docs

Configurar um pipeline CI/CD

Muitos desenvolvedores usam pipelines de integração, entrega e implantação contínuas para testar e publicar automaticamente suas aplicativos sempre que fizerem alterações. Isso é mais comum e útil para aplicativos maiores em que várias pessoas trabalham na base de código em paralelo usando uma implantação de controle de versão compartilhado como o git.

Este guia aborda os estágios de alto nível comuns à maioria dos pipelines de CI/CD e descreve o que você pode fazer em cada estágio. Além disso, ele inclui uma lista de tarefas e ações comuns que você pode executar nos seus pipelines para configurar e testar suas aplicações do Atlas App Services.

Dica

Veja um exemplo real com ações do GitHub

Para ver um exemplo de pipeline CI/CD que gerencia testes, implantações e outras tarefas em um aplicativo real, consulte o artigo Como construir pipelines CI/CD para aplicativos do App Services usando ações do GitHub no MongoDB Developer Hub.

Em um nível alto, a maioria dos pipelines compartilha um padrão comum de movimentação através de múltiplos estágios onde cada um lida com aspectos diferentes.

A etapa de Desenvolvimento é o primeiro passo para criar novos recursos e corrigir bugs em um aplicativo. Nesta etapa você trabalha com arquivos de configuração e o código-fonte do seu aplicativo para implementar as alterações desejadas.

Para desenvolver novas funcionalidades para um aplicativo existente:

  1. Faça um fork do aplicativo principal e implante uma nova cópia de desenvolvimento. Esta instância terá um ID de aplicativo diferente do seu aplicativo de produção. Você também pode usar modelos de valor de ambiente para usar fontes de dados de desenvolvimento e outros serviços que não estão vinculados à produção.

  2. Desenvolva seu aplicativo. Você pode atualizar ou adicionar uma tela de aplicativo para o cliente, adicionar um novo gatilho de banco de dados (trigger) ou quaisquer outras funcionalidades para o aplicativo. Você pode usar o modo de desenvolvimento se precisar alterar o esquema de objetos de Realm sincronizado.

  1. Execute testes automatizados localmente para garantir que seu código não introduza erros novos. Os testes aprovados localmente não garantem que seu aplicativo esteja livre de bugs de integração, mas aumentam a confiança de que suas alterações não incluem regressões nem comportamento não intencional.

O estágio de Preparação, que você também pode chamar de controle de qualidade, teste ou pré-produção, é uma etapa que simula suas alterações de desenvolvimento em um ambiente o mais semelhante possível à produção. Isso fornece a você uma versão utilizável do seu aplicativo para revisão e pode ajudá-lo a detectar bugs de integração com serviços ativos sem afetar os dados de produção.

As especificidades do seu sistema de estágios dependem das necessidades da sua aplicação. No entanto, você pode usar o seguinte procedimento de alto nível para configurá-lo:

  1. Configure seu ambiente de encenação. Use serviços e fontes de dados separados, que não sejam de produção, com configurações que espelhem a produção o mais próximo possível. Por exemplo, você pode utilizar um Atlas cluster denominado staging que de outra forma tem a mesma configuração que seu cluster do production. Dependendo do seu caso de uso, você pode ter uma aplicação consistente que você reutiliza para todas as compilações de encenação ou pode criar uma nova aplicação para cada compilação de encenação.

  2. Crie ou utilize uma compilação de preparação existente. Você pode criar automaticamente uma compilação de preparo como parte do processo de CI/CD, como quando você cria uma nova solicitação pull. Você pode usar um novo aplicativo para cada compilação de teste ou pode reutilizar um ambiente pré-construído que compartilha entre as compilações.

  3. Verifique se seu aplicativo se comporta conforme o esperado. Isso pode envolver a execução de um conjunto de testes automatizados em seu ambiente de preparação, a verificação manual de comportamentos ou a obtenção de aprovação por meio de um teste de aceitação do usuário.

O estágio de produção é a etapa final da implantação em que seu aplicativo modificado é implantado em seu ambiente de produção. O ideal é que, nesse estágio, você já tenha testado suas alterações no local e no ambiente de teste para confirmar que elas podem ser implantadas com segurança. Você pode implantar na produção de forma manual ou automática como parte do fluxo de trabalho de CI/CD atualizando seu aplicativo de produção.

Esta seção descreve tarefas comuns que você executará em seu pipeline de CI/CD. Nem sempre você executa todas essas tarefas, dependendo do seu caso de uso e do estágio do pipeline , mas, em geral, a maioria dos pipelines executará tudo isso pelo menos uma vez.

A configuração e o código da sua aplicação geralmente devem ser semelhantes entre os estágios de desenvolvimento. No entanto, você vai querer alterar o valor de certas opções de configuração dependendo do ambiente.

Determine qual estágio você está construindo e defina os valores de configuração apropriados. Por exemplo, você pode configurar o aplicativo com o ID de um novo aplicativo no estágio de Desenvolvimento ou usar seu ID do aplicativo de produção no estágio de Produção.

# Use the production App ID for the main branch
export REALM_APP_ID="myapp-abcde"
# Use a staging App ID for the QA branch
export REALM_APP_ID="myapp-staging-fghij"
# Use a new App ID for development branches - you'll need to create the app first!
export REALM_APP_ID="myapp-dev-zyxwv"

Dica

Encontre seu ID da aplicação

Talvez você nem sempre consiga codificar seu ID do aplicativo. Você pode procurar um ID de aplicativo específico com o App Services CLI. Para um exemplo, consulte Criar um aplicativo.

O App Services CLI é a maneira mais fácil de criar, configurar e gerenciar programaticamente aplicações Atlas. Você deve instalar e utilizar a versão mais recente em seus roteiros de sistema.

O App Services CLI está disponível em npm. Para instalar a CLI no seu sistema, verifique se você tem o Node.js instalado e, em seguida, execute o seguinte comando em sua shell:

npm install -g atlas-app-services-cli

Você também precisará de um par de chaves de API pública/privada do MongoDB Atlas para autenticar e usar o CLI. Para obter mais informações e um passo a passo de como obter uma chave de API, consulte Chaves de API programáticas.

Para fazer login, salve suas chaves de API em uma nova configuração de perfil nomeado e, em seguida, faça login com esse perfil:

~/.config/appservices/<profile name="">.yaml</profile>
<Profile Name>:
public_api_key: "<MongoDB Atlas Public API Key>"
private_api_key: "<MongoDB Atlas Private API Key>"
atlas_base_url: "https://cloud.mongodb.com"
realm_base_url: "https://services.cloud.mongodb.com"
telemetry_mode: ""
appservices login --profile="<Profile Name>"

Dica

Certifique-se de usar a marcação --profile em todos os seus comandos, caso contrário, o App Services CLI não reconhecerá que você está conectado.

Você pode usar o App Services CLI para criar novas aplicações para uso em desenvolvimento e teste. Se o seu pipeline está na fase de desenvolvimento ou encenação, você deve implantar e testar alterações com uma aplicação diferente da sua aplicação de produção ao vivo.

Para usar um novo aplicativo no estágio de desenvolvimento ou teste:

  1. Criar um novo aplicativo

    Pressione um novo aplicativo com base na ramificação dos arquivos de configuraçãodo aplicativo:

    cd path/to/realmApp
    appservices push -y --project="<MongoDB Atlas Project ID>" # e.g. --project="609ea544934fe445460219a2"
  2. Salvar o ID do aplicativo

    A nova aplicação tem um valor de ID de aplicação exclusivo que você precisará para identificá-lo posteriormente no seu pipeline e na aplicação cliente. Você deve salvar o valor em uma variável de ambiente, arquivo ou outro local.

    # Save to an environment variable
    output=$(appservices app describe)
    app_id=$(echo $output | sed 's/^.*client_app_id": "\([^"]*\).*/\1/')
    export REALM_APP_ID=app_id
    # Save to a file
    echo $REALM_APP_ID > ./clients/ios/realm-app-id.txt

Você pode usar o pp Services CLI para atualizar uma aplicação existente, como uma aplicação de encenação compartilhada ou seu sistema de produção. A aplicação já existe, então você deve conseguir seu ID de aplicação.

Para atualizar um aplicativo existente, especifique o ID do aplicativo no sinalizador --remote:

appservices push --remote=$REALM_APP_ID -y

Seu aplicativo deve incluir conjuntos automatizados de testes unitários e de integração que você pode executar para verificar se tudo funciona. As especificidades da configuração de teste variam dependendo do seu aplicativo, mas talvez seja necessário executar testes em diversas plataformas usando uma variedade de simuladores.

Se você tiver testes de integração, pode conferir as versões anteriores e executar seus testes de integração em relação à versão atual da aplicação para garantir a compatibilidade com as versões anteriores.

No final de um estágio ou pipeline de CI/CD, convém limpar recursos que você criou especificamente para esse teste. Por exemplo, se você criar uma nova aplicação de desenvolvimento ou encenação, você pode excluir as aplicações e quaisquer bancos de dados associados a eles depois que as suas alterações forem mescladas. Alternativamente, você não iria desejar limpar sua aplicação de produção ou uma aplicação de encenação persistente se você usar uma.

Antes de limpar, considere quais recursos podem ser úteis no futuro. Por exemplo, você pode optar por ignorar a exclusão de aplicações e seus bancos de dados se os testes falharem. Dessa forma, você pode investigar manualmente o problema e encontrar qualquer configuração de aplicação ou dados que causaram a falha.