Usando GitHub Actions para atualizar o seu Bot¶
Com o GitHub Actions é possível fazer updates, deploys e releases automáticos para o Orquestrador BotCity Orquestrador, sem a necessidade de processos manuais.
Passaremos por um guia prático nessa seção, você pode acessar mais informações e detalhes no nosso repositório.
Se você ainda não conhece GitHub Actions, visite a documentação oficial do GitHub.
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:
Para ler mais sobre criações de workflows no GitHub Actions, visite a documentação do GitHub.
Crie o seu primeiro workflow¶
O primeiro workflow que criaremos será de atualização de um robô 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, é necessário haver uma Automação previamente criada no Orquestrador BotCity Orquestrador.
Sugestão: Faça o primeiro deploy utilizando o recurso de Easy Deploy.
Capturando o evento definido¶
Crie um arquivo chamado update_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:
Gerando o build do Bot¶
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:
update-latest:
name: Atualização de versão do Bot
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
jobs:
update-latest:
name: Atualização de versão do Bot.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o Java
- uses: actions/setup-java@v3
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
jobs:
update-latest:
name: Atualização de versão do Bot.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
jobs:
update-latest:
name: Atualização de versão do Bot.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
Importante
As etapas descritas podem ser adaptadas para cada projeto, caso necessite adicione mais etapas dentro de steps.
Utilizando a action¶
Com a etapa anterior concluida, vamos adicionar o BotCity Action que fará a atualização do Bot no Orquestrador BotCity.
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: 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: Utilizando a action Botcity.
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use a função de atualização
update: true
# ID do bot no Orquestrador
botId: 'exemplo'
# Tecnologia utilizada no bot
technology: 'python'
# Caminho da raiz do projeto onde ficará o .zip/.jar gerado.
botPath: './bot.zip'
env:
# As secrets devem ser configurados em seu repositório
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
- name: Utilizando a action Botcity.
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use a função de atualização
update: true
# ID do bot no Orquestrador
botId: 'exemplo'
# Tecnologia utilizada no bot
technology: 'java'
# Caminho da raiz do projeto onde ficará o .zip/.jar gerado
botPath: './dist/bot-jar-with-dependencies.jar'
env:
# As secrets devem ser configurados em seu repositório
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
- name: Utilizando a action Botcity.
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use a função de atualização
update: true
# ID do bot no Orquestrador
botId: 'exemplo'
# Tecnologia utilizada no bot
technology: 'javascript'
# Caminho da raiz do projeto onde ficará o .zip/.jar gerado
botPath: './bot.zip'
env:
# As secrets devem ser configurados em seu repositório
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
- name: Utilizando a action Botcity.
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use a função de atualização
update: true
# ID do bot no Orquestrador
botId: 'exemplo'
# Tecnologia utilizada no bot
technology: 'typescript'
# Caminho da raiz do projeto onde ficará o .zip/.jar gerado
botPath: './bot.zip'
env:
# As secrets devem ser configurados em seu repositório
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
Atenção
Dentro de with indicamos os parâmetros a serem utilizados, lembre-se de substituir os valores:
botId: ID do seu Bot no Orquestrador BotCity.technology: tecnologia utilizada no Bot.botPath: caminho do arquivo gerado pelo build.version: a versão do Bot.repositoryLabel: nome do repositório do Bot.
Os parâmetros são obrigatórios nas seguintes ações:
deploy:botId,technology,botPath,version,repositoryLabeluptade:botId,technology,botPathrelease:botId,technology,botPath,version
Arquivo completo¶
name: Atualizar a versão mais recente do Bot no Orquestrador.
on:
push:
branches:
- main
jobs:
update-latest:
name: Atualização de versão do Bot
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
- name: Utilizando a action Botcity.
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use a função de atualização
update: true
# ID do bot no Orquestrador
botId: 'exemplo'
# Tecnologia utilizada no bot
technology: 'python'
# Caminho da raiz do projeto onde ficará o .zip/.jar gerado
botPath: './bot.zip'
env:
# As secrets devem ser configurados em seu repositório
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
name: Atualizar a versão mais recente do Bot no Orquestrador.
on:
push:
branches:
- main
jobs:
update-latest:
name: Atualização de versão do Bot.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o Java
- uses: actions/setup-java@v3
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
- name: Utilizando a action Botcity.
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use a função de atualização
update: true
# ID do bot no Orquestrador
botId: 'exemplo'
# Tecnologia utilizada no bot
technology: 'java'
# Caminho da raiz do projeto onde ficará o .zip/.jar gerado
botPath: './dist/bot-jar-with-dependencies.jar'
env:
# As secrets devem ser configurados em seu repositório
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
name: Atualizar a versão mais recente do Bot no Orquestrador.
on:
push:
branches:
- main
jobs:
update-latest:
name: Atualização de versão do Bot.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
- name: Utilizando a action Botcity.
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use a função de atualização
update: true
# ID do bot no Orquestrador
botId: 'exemplo'
# Tecnologia utilizada no bot
technology: 'javascript'
# Caminho da raiz do projeto onde ficará o .zip/.jar gerado
botPath: './bot.zip'
env:
# As secrets devem ser configurados em seu repositório
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
name: Atualizar a versão mais recente do Bot no Orquestrador.
on:
push:
branches:
- main
jobs:
update-latest:
name: Atualização de versão do Bot.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
- name: Utilizando a action Botcity.
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use a função de atualização
update: true
# ID do bot no Orquestrador
botId: 'exemplo'
# Tecnologia utilizada no bot
technology: 'typescript'
# Caminho da raiz do projeto onde ficará o .zip/.jar gerado
botPath: './bot.zip'
env:
# As secrets devem ser configurados em seu repositório
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
Resultado¶
Com o arquivo pronto, vamos acionar o workflow conforme o evento definido. Execute um push na main e veja o resultado semelhante a este:

Criando um workflow avançado para executar deploy e release do seu Bot.¶
Utilizando o GitHub Actions, é possível criar workflows mais avançados para executar o deploy e a release do seu Bot no Orquestrador BotCity. Podemos configurar o seu acionamento a partir dos diversos eventos disponíveis no GitHub.
Como exemplo, vamos criar um workflow que será acionado a partir da publicação de uma release no GitHub.
Definiremos:
- Evento:
release - Tipo:
[ published ]
Note
Para definir a versão do Deploy e a Release do Bot no Orquestrador BotCity, utilizaremos a tag da Release.
Para entender como criar Releases no GitHub, acesse a documentação do GitHub.
Capturando evento de publicação da release¶
Crie um arquivo chamado deploy_and_release.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 e Release de versão do Bot no Orquestrador BotCity.
on:
# Capturando o evento de publicação da release.
release:
types: [ published ]
Gerando o build do Bot¶
Assim como anteriormente precisamos como pré-requisito um arquivo chamado build.sh na raiz do projeto.
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o Java
- uses: actions/setup-java@v3
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
Utilizando a action¶
Nessa etapa, além de usar as credenciais configuradas no repositório como anteriormente, também vamos utilizar variáveis de eventos do GitHub.
A variável github.event.release.tag_name retorna o nome da tag utilizada ao publicar uma release no GitHub.
- name: BotCity action
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use as funções de deploy e release
deploy: true
release: true
# Use tag_name do evento release do GitHub
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'python'
botPath: './bot.zip'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
- name: Botcity action
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use as funções de deploy e release
deploy: true
release: true
# Use tag_name do evento release do GitHub
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'java'
botPath: './dist/bot-jar-with-dependencies.jar'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
- name: Botcity action
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use as funções de deploy e release
deploy: true
release: true
# Use tag_name do evento release do GitHub
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'javascript'
botPath: './bot.zip'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
- name: Botcity action
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use as funções de deploy e release
deploy: true
release: true
# Use tag_name do evento release do GitHub
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'typescript'
botPath: './bot.zip'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
Atenção
Dentro de with indicamos os parâmetros a serem utilizados, lembre-se de substituir os valores:
botId: ID do seu Bot no Orquestrador BotCity.technology: tecnologia utilizada no Bot.botPath: caminho do arquivo gerado pelo build.version: a versão do Bot.repositoryLabel: nome do repositório do Bot.
Os parâmetros são obrigatórios nas seguintes ações:
deploy:botId,technology,botPath,version,repositoryLabeluptade:botId,technology,botPathrelease:botId,technology,botPath,version
Arquivo completo¶
name: Deploy e Release de versão do Bot no Orquestrador BotCity.
on:
# Capturando o evento de publicação da release
release:
types: [ published ]
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
- name: BotCity action
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use as funções de deploy e release
deploy: true
release: true
# Use tag_name do evento release do GitHub
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'python'
botPath: './bot.zip'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
name: Deploy e Release de versão do Bot no Orquestrador BotCity.
on:
# Capturando o evento de publicação da release
release:
types: [ published ]
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o Java.
- uses: actions/setup-java@v3
# Instalando o projeto.
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
- name: Botcity action
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use as funções de deploy e release
deploy: true
release: true
# Use tag_name do evento release do GitHub
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'java'
botPath: './dist/bot-jar-with-dependencies.jar'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
name: Deploy e Release de versão do Bot no Orquestrador BotCity.
on:
# Capturando o evento de publicação da release
release:
types: [ published ]
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
- name: Botcity action
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use as funções de deploy e release
deploy: true
release: true
# Use tag_name do evento release do GitHub
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'javascript'
botPath: './bot.zip'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
name: Deploy e Release de versão do Bot no Orquestrador Botcity.
on:
# Capturando o evento de publicação da release
release:
types: [ published ]
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
# Executando na versão mais recente do Ubuntu
runs-on: ubuntu-latest
steps:
# Instalando o projeto
- uses: actions/checkout@v4
# Garante que o script build.sh possa ser executado
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executa o script de build para compilar o projeto
- name: Executando o build.
run: ./build.sh
- name: Botcity action
# Usando a versão v1.0.6 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.6
with:
# Use as funções de deploy e release
deploy: true
release: true
# Use tag_name do evento release do GitHub
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'typescript'
botPath: './bot.zip'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
Resultado¶
Execute a release e o resultado será este:

Utilitários de Pipeline CI/CD BotCity¶
Esse Guia Prático tem foco no uso do GitHub Actions, porém existe a possibilidade de utilizar outras técnologias através dos Utilitários de Pipeline CI/CD BotCity. Confira no repositório os exemplos de integração com GitHub Actions, Azure Pipelines, Woodpecker CI, BitBucket Pipelines, GitLab CI e Jenkins.