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 Maestro, 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 Maestro.
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 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: 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 Maestro
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 Maestro
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 Maestro
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 Maestro
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 Maestro.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
,repositoryLabel
uptade
:botId
,technology
,botPath
release
:botId
,technology
,botPath
,version
Arquivo completo¶
name: Atualizar a versão mais recente do Bot no Orquestrador Maestro.
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 Maestro
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 Maestro.
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 Maestro
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 Maestro.
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 Maestro
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 Maestro.
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 Maestro
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 Maestro. 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 Maestro, 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 Maestro.
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 Maestro.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
,repositoryLabel
uptade
:botId
,technology
,botPath
release
:botId
,technology
,botPath
,version
Arquivo completo¶
name: Deploy e Release de versão do Bot no Orquestrador Botcity Maestro.
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 Maestro.
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 Maestro.
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 Maestro.
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.