Usando GitHub Actions para atualizar o seu Bot¶
Com o GitHub Actions é possível fazer updates
, deploys
e releases
automáticos para o Maestro, sem a necessidade de processos manuais.
Para mais informações acesse o nosso repositório.
Para ler mais sobre GitHub Actions visite a documentação oficial.
Configurando o projeto¶
Primeiro é necessário criar uma pasta chamada .github
no seu projeto e dentro criar outra pasta chamada workflows
A estrutura de pasta deverá ficar dessa forma:
Para ler mais sobre criações de workflows
no GitHub Actions, visite a documentação.
Crie o seu primeiro workflow
¶
O primeiro workflow
que vamos criar é simples, quando um push
acontecer na branch
main
, acionaremos a action
para atualizar o Bot
no Maestro.
Importante
Neste caso, deve haver um Bot
previamente criado no Maestro.
Para ler mais sobre os Bots
, visite a página de documentação.
Capturando o evento "push" na main
¶
Crie um arquivo chamado update_bot.yml
dentro da pasta workflows
.
No início deste arquivo, adicione as seguintes linhas:
Gerando o Bot¶
Nessa etapa precisamos de apenas um pré-requisito:
- Um arquivo
.sh
para gerar o Bot.
Com esse arquivo no projeto podemos seguir com o exemplo.
jobs:
update-latest:
name: Atualize a versão mais recente do Bot no BotCity Maestro.
# Executando na versão mais recente do Ubuntu.
runs-on: ubuntu-latest
jobs:
# Instalando o projeto.
- uses: actions/checkout@v3
# Tornando `build.sh` executável
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executando o build.
- name: Executando o build.
run: ./build.sh
jobs:
update-latest:
name: Atualize a versão mais recente do Bot no BotCity Maestro.
# Executando na versão mais recente do Ubuntu.
runs-on: ubuntu-latest
jobs:
# Instalando o Java.
- uses: actions/setup-java@v3
# Instalando o projeto.
- uses: actions/checkout@v3
# Tornando `build.sh` executável
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executando o build.
- name: Executando o build.
run: ./build.sh
jobs:
update-latest:
name: Atualize a versão mais recente do Bot no BotCity Maestro.
# Executando na versão mais recente do Ubuntu.
runs-on: ubuntu-latest
jobs:
# Instalando o projeto.
- uses: actions/checkout@v3
# Tornando `build.sh` executável
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executando o build.
- name: Executando o build.
run: ./build.sh
jobs:
update-latest:
name: Atualize a versão mais recente do Bot no BotCity Maestro.
# Executando na versão mais recente do Ubuntu.
runs-on: ubuntu-latest
jobs:
# Instalando o projeto.
- uses: actions/checkout@v3
# Tornando `build.sh` executável
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executando o build.
- name: Executando o build.
run: ./build.sh
Importante
O seu Bot
pode precisar de mais etapas a serem executadas, vai depender de cada projeto.
Utilizando a action
¶
Após executar o que é necessário para o gerar o Bot
, é hora de usar a action
para atualizar no Maestro.
- name: Utilizando a action Botcity.
# Usando a versão v1.0.0 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
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.0 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
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.0 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
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.0 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
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 }}
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.
Para ler mais sobre os secrets
, acesse a documentação.
Execute um push
na main
e o resultado será este:
Arquivo completo¶
name: Atualizar a versão mais recente do Bot no Maestro.
on:
push:
branches:
- main
jobs:
update-latest:
name: Atualize a versão mais recente do Bot no BotCity Maestro.
# Executando na versão mais recente do Ubuntu.
runs-on: ubuntu-latest
jobs:
# Instalando o projeto.
- uses: actions/checkout@v3
# Tornando `build.sh` executável
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executando o build.
- name: Executando o build.
run: ./build.sh
- name: Utilizando a action Botcity.
# Usando a versão v1.0.0 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
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 Maestro.
on:
push:
branches:
- main
jobs:
update-latest:
name: Atualize a versão mais recente do Bot no BotCity Maestro.
# Executando na versão mais recente do Ubuntu.
runs-on: ubuntu-latest
jobs:
# Instalando o Java.
- uses: actions/setup-java@v3
# Instalando o projeto.
- uses: actions/checkout@v3
# Tornando `build.sh` executável
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executando o build.
- name: Executando o build.
run: ./build.sh
- name: Utilizando a action Botcity.
# Usando a versão v1.0.0 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
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 Maestro.
on:
push:
branches:
- main
jobs:
update-latest:
name: Atualize a versão mais recente do Bot no BotCity Maestro.
# Executando na versão mais recente do Ubuntu.
runs-on: ubuntu-latest
jobs:
# Instalando o projeto.
- uses: actions/checkout@v3
# Tornando `build.sh` executável
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executando o build.
- name: Executando o build.
run: ./build.sh
- name: Utilizando a action Botcity.
# Usando a versão v1.0.0 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
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 Maestro.
on:
push:
branches:
- main
jobs:
update-latest:
name: Atualize a versão mais recente no BotCity.
# Executando na versão mais recente do Ubuntu.
runs-on: ubuntu-latest
jobs:
# Instalando o projeto.
- uses: actions/checkout@v3
# Tornando `build.sh` executável
- name: Obtenha permissão para utilizar o build.
run: chmod +x build.sh
# Executando o build.
- name: Executando o build.
run: ./build.sh
- name: Utilizando a action Botcity.
# Usando a versão v1.0.0 do botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
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 }}
Criando um workflow avançado para executar deploy e release do seu Bot.¶
Aqui as coisas começam a ficar mais interessantes, pode haver mil maneiras de fazer, mas o que será demonstrado será um exemplo.
Vamos deixar claro o que queremos com esse workflow
:
- Terá que ser feito uma Release no GitHub.
- Com a Release deverá haver a criação de uma
tag
- O Deploy/Release será executado no Maestro.
Para saber como criar uma release.
Capturando evento de publicação da release¶
name: Deploy and Release in from GitHub release
on:
# Capturando o evento de publicação da release.
release:
types: [ published ]
Gerando o bot¶
Utilizando a action¶
Importante
Nesse caso, é importante destacar o uso da variável disponibilizada pelo GitHub para tornar dinâmica a versão da release.
- name: Botcity action
uses: botcity-dev/botcity-action-bots@latest
with:
deploy: true
release: true
# Use tag_name to release.
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
uses: botcity-dev/botcity-action-bots@latest
with:
deploy: true
release: true
# Use tag_name to release.
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
uses: botcity-dev/botcity-action-bots@latest
with:
deploy: true
release: true
# Use tag_name to release.
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
uses: botcity-dev/botcity-action-bots@latest
with:
deploy: true
release: true
# Use tag_name to release.
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'typescript'
botPath: './bot.zip'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
Execute a release e o resultado será este:
Arquivo completo¶
name: Deploy and Release in from GitHub release
on:
# Capturing the release publishing event.
release:
types: [ published ]
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get permission to build.
run: chmod +x build.sh
- name: Execute to build.
run: ./build.sh
- name: Botcity action
uses: botcity-dev/botcity-action-bots@v1.0.0
with:
deploy: true
release: true
# Use tag_name to release.
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 and Release in from github release
on:
# Capturing the release publishing event.
release:
types: [ published ]
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
runs-on: ubuntu-latest
steps:
- uses: actions/setup-java@v3
- uses: actions/checkout@v3
- name: Get permission to build.
run: chmod +x build.sh
- name: Execute to build.
run: ./build.sh
- name: Botcity action
uses: botcity-dev/botcity-action-bots@v1.0.0
with:
deploy: true
release: true
# Use tag_name to release.
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 and Release in from GitHub release
on:
# Capturing the release publishing event.
release:
types: [ published ]
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get permission to build.
run: chmod +x build.sh
- name: Execute to build.
run: ./build.sh
- name: Botcity action
uses: botcity-dev/botcity-action-bots@v1.0.0
with:
deploy: true
release: true
# Use tag_name to release.
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 and Release in from github release
on:
# Capturing the release publishing event.
release:
types: [ published ]
jobs:
deploy-and-release:
name: Deploy and release in BotCity.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get permission to build.
run: chmod +x build.sh
- name: Execute to build.
run: ./build.sh
- name: Botcity action
uses: botcity-dev/botcity-action-bots@v1.0.0
with:
deploy: true
release: true
# Use tag_name to release.
version: ${{ github.event.release.tag_name }}
botId: 'example'
technology: 'typescript'
botPath: './bot.zip'
env:
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}