Ir para o conteúdo

Integração com GitHub Actions

Agora que entendemos o processo na plataforma do Orquestrador e o como o utilitário cURL funciona, vamos fazer a integração em um documento para definir os processos e passos para o projeto.

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 documentos .yml.

A estrutura de pasta deverá ficar dessa forma:

.
└── .github
  └── workflows
    └── deploy_and_release.yml
...

Crie o seu primeiro workflow

O primeiro workflow que criaremos será de deploy e release de uma nova versão de um robô já existente.

Vamos utilizar um evento em uma branch específica para acionar todo processo.

Definiremos:

  • Evento: push
  • Branch: main

Ou seja, toda vez que houver um push na branch main, o workflow será acionado.

Capturando o evento definido

Crie um arquivo chamado delpoy_and_release_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:

name: Deploy and Release automatizado

on:
  push:
    branches:
      - main

Configurando o ambiente remoto

Nessa etapa precisamos como pré-requisito um arquivo chamado build.sh para fazer a etapa de build automaticamente.

Também precisamos do bot.sh que será responsável pelos comandos de deploy, update e release desse projeto.

Notem que é necessário conceder permissão para os scripts executarem no ambiente criado anteriormente.

jobs:
  build_and_deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Run build script
        run: |
          chmod +x build.sh
          ./build.sh

      - name: Checkout bot.sh from repository
        run: |
          git clone --branch v1.0 https://github.com/botcity-dev/cicd-pipeline-utils.git
          chmod +x cicd-pipeline-utils/scripts/bot.sh

Configurando os utilitários

Como definimos anteriormente, faremos o processo de deploy e release de um novo projeto no Orquestrador da BotCity.

Nessa etapa, é necessário configurar as variáveis de ambiente dentro do repositório no GitHub para a comunicação segura entre a Action e o Orquestrador.

Atenção!

Faremos a etapa de configuração das secrets no repositório do GitHub no próximo lab.

Seguindo no documento vamos definir:

Primeiro o processo de deploy, onde acessamos as credenciais na env através das secrets e em seguida executamos no run o subcomando de deploy.

Próximo passo é o release, onde acessamos as credenciais na env através das secrets e em seguida executamos no run o subcomando de release.

- name: Deploy Bot
  env:
    SERVER: ${{ secrets.SERVER }}
    LOGIN: ${{ secrets.LOGIN }}
    KEY: ${{ secrets.KEY }}
  run: >
    cicd-pipeline-utils/scripts/bot.sh deploy 
    -version "1.1.0" 
    -botFile ".\<path_do_zip_gerado_pelo_build>" 
    -botId "ExampleBot" 
    -type "python" 
    -repository "DEFAULT"

- name: Release Bot
  env:
    SERVER: ${{ secrets.SERVER }}
    LOGIN: ${{ secrets.LOGIN }}
    KEY: ${{ secrets.KEY }}
  run: >
    cicd-pipeline-utils/scripts/bot.sh release 
    -version "1.1.0" 
    -botId "ExampleBot"

Workflow completo

O documento final ficará semelhante a esse, tento atenção aos detalhes do seu projeto nos parâmetros dos utilitários.

on:
  push:
    branches:
      - main

jobs:
  build_and_deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Run build script
        run: |
          chmod +x build.sh
          ./build.sh

      - name: Checkout bot.sh from repository
        run: |
          git clone --branch v1.0 https://github.com/botcity-dev/cicd-pipeline-utils.git
          chmod +x cicd-pipeline-utils/scripts/bot.sh

      - name: Deploy Bot
        env:
          SERVER: ${{ secrets.SERVER }}
          LOGIN: ${{ secrets.LOGIN }}
          KEY: ${{ secrets.KEY }}
        run: >
          cicd-pipeline-utils/scripts/bot.sh deploy 
          -version "1.1.0" 
          -botFile ".\<path_do_zip_gerado_pelo_build>" 
          -botId "ExampleBot" 
          -type "python" 
          -repository "DEFAULT"

      - name: Release Bot
        env:
          SERVER: ${{ secrets.SERVER }}
          LOGIN: ${{ secrets.LOGIN }}
          KEY: ${{ secrets.KEY }}
        run: >
          cicd-pipeline-utils/scripts/bot.sh release 
          -version "1.1.0" 
          -botId "ExampleBot"