DEV Community

Cover image for Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado
Morganna for BotCity

Posted on • Updated on

Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado

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
Enter fullscreen mode Exit fullscreen mode

[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
Enter fullscreen mode Exit fullscreen mode

[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 }}
Enter fullscreen mode Exit fullscreen mode

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.

Top comments (4)

Collapse
 
4llves profile image
Jhonata Alves

Amei o artigo. Terminando o projeto atual, vou começar a usar a BotCity.

Collapse
 
morgannadev profile image
Morganna

Que massa, quando começar a usar, me fala! E qualquer coisa, só chamar! E obrigada pelo feedback sobre o artigo!

Collapse
 
lucasdauto profile image
Lucas Dauto

Excelente artigo, parabéns.

Collapse
 
morgannadev profile image
Morganna

Que bom que gostou do artigo, Lucas, obrigada pelo feedback! Qualquer dúvida, só chamar!