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"