Ir para o conteúdo

Utilizando CI/CD para automatizar o processo de Deploy do robô

O BotCity oferece suporte nativo ao uso do GitHub Actions por meio do BotCity Actions - Bots.

Para suportar diversas outras tecnologias de pipeline CI/CD, fornecemos os scripts Bash detalhados abaixo.

Dica

Confira os exemplos disponíveis para GitHub Actions, Azure Pipelines, Woodpecker CI, BitBucket Pipelines, GitLab CI e Jenkins clicando aqui.

Script de Gerenciamento de Bots

O bot.sh é um script Bash versátil projetado para lidar com tarefas comuns de gerenciamento de bots, incluindo deploy, atualização e release de bots por meio da API do BotCity Orchestrator.

Esse script simplifica as operações de gerenciamento de bots em pipelines CI/CD, fornecendo uma interface de linha de comando fácil de usar.

Funcionalidades

  • Deploy/Implantar um bot: Fazer upload e implantar uma nova versão de um bot.
  • Update/Atualizar um bot: Atualizar a versão de um bot existente.
  • Release/Liberar um bot: Liberar uma versão de um bot na plataforma BotCity Orchestrator.

Requisitos

  • cURL: Utilizado para enviar requisições HTTP.
  • Variáveis de Ambiente: É necessário definir as seguintes variáveis de ambiente para autenticação:
  • SERVER: URL do servidor da API do BotCity Orchestrator.
  • LOGIN: Seu login na API do BotCity Orchestrator.
  • KEY: Sua chave da API do BotCity Orchestrator.

Info

Você pode encontrar seu login e chave da API do Orchestrator no menu Ambiente do Desenvolvedor.
Mais informações disponíveis em nossa documentação.

Uso

O script suporta três subcomandos: deploy, update e release. Abaixo estão as instruções detalhadas para cada um.

Deploy/Implantar um Bot

Para fazer o deploy de um bot, use o subcomando deploy. Isso fará upload e deploy/implantação do bot no BotCity Orchestrator.

Parâmetros Obrigatórios:

  • -version: A versão do bot.
  • -botFile: O caminho para o arquivo do bot.
  • -botId: O identificador único do bot.
  • -type: O tipo de tecnologia do bot (por exemplo, python, java, etc.).
  • -repository: (Opcional) O rótulo do repositório. O padrão é DEFAULT, caso não seja especificado.
./bot.sh deploy -version "1.0.0" -botFile "/caminho/para/bot.zip" -botId "MeuBotId" -type "python" -repository "DEFAULT"

Atualizar um Bot

Para atualizar um bot, use o subcomando update. Esse comando atualizará a versão do bot especificado no BotCity Orchestrator.

Parâmetros Obrigatórios:

  • -version: A versão do bot.
  • -botFile: O caminho para o arquivo do bot.
  • -botId: O identificador único do bot.
./bot.sh update -version "1.0.0" -botFile "/caminho/para/bot.zip" -botId "MeuBotId"

Lançar um Bot

Para lançar um bot, use o subcomando release. Esse subcomando requer apenas o ID do bot e a versão.

Parâmetros Obrigatórios:

  • -version: A versão do bot.
  • -botId: O identificador único do bot.
./bot.sh release -version "1.0.0" -botId "MeuBotId"

Exemplo de Uso

Configurando o projeto

Primeiro é necessário criar uma pasta chamada .github no seu projeto e dentro dela criar outra pasta chamada workflows, nesta pasta ficarão os arquivos .yml.

A estrutura de pasta deverá ficar dessa forma:

.
└── .github
  └── workflows
    └── deploy_and_release.yml
...

Crie o seu primeiro workflow

O primeiro workflow que criaremos será de deploy e release de uma nova versão de um robô já existente. Vamos utilizar um evento em uma branch específica para acionar a atualização.

Definiremos:

  • Evento: push
  • Branch: main

Ou seja, toda vez que houver um push na branch main, o workflow será acionado.

Importante

Para esse caso, você poderá usar a Automação custon implementada no Orquestrador no lab 3.2.

Capturando o evento definido

Crie um arquivo chamado delpoy_and_release_bot.yml dentro da pasta workflows.

No início deste arquivo, vamos colocar o nome do workflow e o evento que definimos, da seguinte forma:

name: Deploy and Release automatizado

on:
  push:
    branches:
      - main

Gerando o build do Bot e fazendo checkout no repositório de scripts BotCity

Nessa etapa precisamos como pré-requisito um arquivo chamado build.sh na raiz do projeto que contenha os comandos necessários para compilar o Bot.

jobs:
  build_and_deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Run build script
        run: |
          chmod +x build.sh
          ./build.sh

      - name: Checkout bot.sh from repository
        run: |
          git clone --branch v1.0 https://github.com/botcity-dev/cicd-pipeline-utils.git
          chmod +x cicd-pipeline-utils/scripts/bot.sh

Utilizando a action

Com a etapa anterior concluída, vamos adicionar o BotCity Action que fará a deploy e release do Bot no Orquestrador BotCity Maestro.

Nessa etapa, é necessário configurar as variáveis de ambiente dentro do repositório no GitHub. Vamos adicionar as credenciais para acesso ao Orquestrador BotCity Maestro: LOGIN, SERVER e KEY. Você encontra essas informações em Amb. de Desenvolvedor, dentro do Orquestrador.

Aviso

Sempre configure as suas credenciais nos secrets do repositório por motivos de segurança. Não é recomendável passar essas informações diretamente no código.

Com as secrets prontas, ainda dentro de steps, adicione as configurações da action:

- name: Deploy Bot
  env:
    SERVER: ${{ secrets.SERVER }}
    LOGIN: ${{ secrets.LOGIN }}
    KEY: ${{ secrets.KEY }}
  run: |
    cicd-pipeline-utils/scripts/bot.sh deploy -version "1.1.0" -botFile "<path_do_zip_gerado_pelo_build>" -botId "ExampleBot" -type "python" -repository "DEFAULT"

- name: Release Bot
  env:
    SERVER: ${{ secrets.SERVER }}
    LOGIN: ${{ secrets.LOGIN }}
    KEY: ${{ secrets.KEY }}
  run: |
    cicd-pipeline-utils/scripts/bot.sh release -version "1.1.0" -botId "ExampleBot"

Workflow completo

on:
  push:
    branches:
      - main

jobs:
  build_and_deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Run build script
        run: |
          chmod +x build.sh
          ./build.sh

      - name: Checkout bot.sh from repository
        run: |
          git clone --branch v1.0 https://github.com/botcity-dev/cicd-pipeline-utils.git
          chmod +x cicd-pipeline-utils/scripts/bot.sh

      - name: Deploy Bot
        env:
          SERVER: ${{ secrets.SERVER }}
          LOGIN: ${{ secrets.LOGIN }}
          KEY: ${{ secrets.KEY }}
        run: |
          cicd-pipeline-utils/scripts/bot.sh deploy -version "1.1.0" -botFile "<path_do_zip_gerado_pelo_build>" -botId "ExampleBot" -type "python" -repository "DEFAULT"

      - name: Release Bot
        env:
          SERVER: ${{ secrets.SERVER }}
          LOGIN: ${{ secrets.LOGIN }}
          KEY: ${{ secrets.KEY }}
        run: |
          cicd-pipeline-utils/scripts/bot.sh release -version "1.1.0" -botId "ExampleBot"

Com o arquivo yml devidamente configurado, basta enviar esse projeto para um repositório do Github, e ao fazer um push na main o workflow será acionado, fazendo deploy e release do robô.

Para mais informações

Visite o projeto no GitHub, envie issues ou pull requests para melhorar este script e revise os detalhes de licenciamento clicando aqui.