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.