Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado
Morganna
Posted on June 12, 2023
en-us: link
É possível que você já tenha ouvido falar sobre o GitHub Actions. E caso ainda não tenha tido a oportunidade de conhecer essa funcionalidade, aproveite e explore a documentação sobre ela neste link.
E para aproveitar a praticidade de realizar diversas ações em projetos a partir desta funcionalidade, nós criamos uma função do GitHub Actions para automatizar a atualização dos bots, chamada BotCity Actions, e você pode encontrá-la disponível neste repositório.
Por que utilizar o BotCity Actions?
Sempre que podemos automatizar um processo para facilitar o nosso dia-a-dia, faz sentido aprendermos como fazê-lo e entendermos se faz sentido em nosso contexto e necessidade. Então, caso você tenha um processo contínuo de desenvolvimento dos seus bots, por que não facilitar o seu dia-a-dia e automatizar não apenas os processos de negócio e produto, mas também o deploy e atualização de suas releases?
Como funciona o BotCity Actions?
A nossa função realiza updates, deploys e releases de forma automática para o nosso orquestrador, BotCity Maestro, sem a necessidade de implementações manuais. Inclusive, caso você ainda não tenha familiaridade com a API do BotCity Maestro, para melhor aproveitamento, fique à vontade para consultar nossa documentação neste link.
Aplicando a função BotCity Actions em seu projeto
Acompanhe o passo-a-passo abaixo. No exemplo, estamos considerando projetos construídos com a linguagem Python. Contudo, fique à vontade para utilizar outras linguagens e, caso tenha interesse, temos exemplos em nossa documentação para configuração de projetos em Java, JavaScript e TypeScript.
[0] Configuração do projeto
Como primeiro passo, você precisa adicionar uma estrutura de pastas em seu projeto. Primeiramente crie a pasta com o exato nome .github
na raiz do seu projeto. Dentro dessa pasta, crie outra com o exato nome workflows
.
Essa especificação vem diretamente do GitHub e é dessa forma que será interpretado onde estão as funções que precisam ser executadas. Para maiores esclarecimentos, lembre-se de consultar a documentação.
[1] Criação do primeiro workflow
Neste ponto, estamos considerando que você já tenha bots desenvolvidos. Mas se quiser uma ajuda, dá uma olhada nesse link da nossa documentação. Temos um tutorial bem interessante sobre como desenvolver um bot com os nossos frameworks Open Source.
Ainda assim, ressaltamos que você pode usar bots construídos com outras tecnologias em nosso orquestrador, por exemplo, Java, JavaScript, Selenium, scripts bash, entre muitos outros.
Um dos eventos que podemos considerar em nossa action seria o push
na branch main
. Isso significa que toda vez que ocorrer uma alteração na branch principal, você quer que um novo deploy seja feito no BotCity Maestro para atualizar o bot. Funciona dessa forma caso você esteja considerando algumas regras e boas práticas do Git Flow, em que a branch main
é a branch de produção.
Neste passo, dentro da pasta workflows
, vamos criar o arquivo update_bot.yml
. E você deverá adicionar o código abaixo para considerar justamente as alterações explicadas acima do evento push
na branch main
:
name: Update the latest version bot on BotCity Maestro.
on:
push:
branches:
- main
[2] Gerando o bot pela função BotCity Actions
Para saber o que precisa ser adicionado na função, é necessário também entender o é necessário para o deploy do seu bot.
Por exemplo, considerando que você desenvolveu sua automação com o nosso framework Open Source, precisamos atender o seguinte pré-requisito: gerar um arquivo zipado com o código e as dependências do bot, que pode ser criado a partir da execução do script ./build.sh
ou ./build.bat
, dependendo do sistema operacional. Esse script fica localizado na raiz do projeto criado a partir do nosso template do framework desktop ou web.
Então, precisamos adicionar em nossa função as seguintes ações:
- Executar em um ambiente (que no caso escolhemos Ubuntu, pela facilidade e rapidez, contudo você pode analisar o seu caso em específico e entender se há dependências importantes a serem consideradas e, se necessário, executar em um ambiente Windows ou MacOS, por exemplo);
- Dar a permissão para o arquivo
build.sh
ser executado; - Rodar o comando
./build.sh
.
Com essas novas ações, nosso arquivo update_bot.yml
ficará assim:
name: Update the latest version bot on BotCity Maestro.
on:
push:
branches:
- main
jobs:
update-latest:
name: Update the latest version bot on BotCity Maestro.
# Running the latest version of Ubuntu.
runs-on: ubuntu-latest
steps:
# Checking out the project.
- uses: actions/checkout@v3
# Implemented executable permission to `.sh`
- name: Get permission to build.
run: chmod +x build.sh
# Execute to build.
- name: Execute to build.
run: ./build.sh
[3] Utilizando a função
A sequência de passos que adicionamos no arquivo update_bot.yml
até o momento foi para definir um ambiente para buildar e também para criarmos o arquivo compactado que faremos o envio no deploy no Maestro. Contudo, agora precisamos configurar os passos para a função ser utilizada.
Adicionamos, neste caso, alguns dados importantes para o deploy acontecer com sucesso. São eles: botId, technology (onde você deve informar a linguagem utilizada no seu bot e, em nosso exemplo, consideramos Python) e botPath (local na raiz do projeto onde o arquivo compactado estará para ser feito upload na plataforma do nosso orquestrador.
name: Update the latest version bot on BotCity Maestro.
on:
push:
branches:
- main
jobs:
update-latest:
name: Update the latest version bot on BotCity Maestro.
# Running the latest version of Ubuntu.
runs-on: ubuntu-latest
steps:
# Checking out the project.
- uses: actions/checkout@v3
# Implemented executable permission to `.sh`
- name: Get permission to build.
run: chmod +x build.sh
# Execute to build.
- name: Execute to build.
run: ./build.sh
- name: Using a Botcity action.
# Using the v1.0.0 version of botcity-action-bots
uses: botcity-dev/botcity-action-bots@v1.0.0
with:
# Use the update function.
update: true
# Bot Id in Maestro.
botId: 'example'
# Technology utilized in bot
technology: 'python'
# Path from the root of the project where the generated .zip/.jar will be.
botPath: './bot.zip'
env:
# These secrets must be configured in your repository.
LOGIN: ${{ secrets.LOGIN }}
SERVER: ${{ secrets.SERVER }}
KEY: ${{ secrets.KEY }}
Perceba que adicionamos também algumas variáveis de ambiente como LOGIN, SERVER e KEY. Essas são secrets importantes para você conseguir utilizar o BotCity Maestro. Então lembre-se de configurar essas chaves de maneira segura no seu repositório.
Onde posso encontrar mais dicas?
Você pode acessar o guia que criamos em nossa documentação com muito mais dicas e orientações sobre como utilizar o BotCity Actions, inclusive para criar releases e muito mais.
Além disso, não esqueça de entrar em nossa comunidade para compartilhar seus projetos Open Source e tirar suas dúvidas com outras pessoas. Vai ser muito interessante aprender com a sua experiência.
Posted on June 12, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.