Rodar DEVBot local
Além de poder utilizar o bot diretamente do chat, você pode executar ele localmente, porem isso só deve ser utilizado para debugar seu código e/ou testar algum funcionalidade em desenvolvimento.
Substituir os Tokens
Para isso você deve ter acesso aos tokens do GitLab no qual o bot utiliza para se comunicar e ter acesso as branchs, MR e criar pipelines.
Private Token
: AN4sFA_oqdrX_4pLaaxPTrigger Token
: add162c8bcd82f830e340e094f3078
Estes tokens acima devem ser inseridos no local de suas constantes no arquivo itflex/bots/devbot/repo.py
, para que o bot possa se comunicar com nosso servidor do GitLab.
Private Token
...
# L: 19
def _connect_gitlab():
return Gitlab(GITLAB_URL, private_token="AN4sFA_oqdrX_4pLaaxP")
...
Trigger Token
...
# L: 265
def trigger_pipeline(
self, ref: str = "master", vars: Dict[str, str] = None
) -> Pipeline:
if not vars:
vars = {}
itflex_project = self.api.projects.get(206)
pipeline = itflex_project.trigger_pipeline(
ref, "add162c8bcd82f830e340e094f3078", variables=vars
)
return Pipeline(
id=pipeline.id,
project_id=itflex_project.id,
status=pipeline.status,
web_url=pipeline.web_url,
)
...
Executar a aplicação
Com a virtual env do projeto devbot habilitada e estando no diretório itflex/bots/devbot
, execute o script presente com o seguinte comando:
sudo ./run.sh
Simulando a interação do chat
Como não precisamos subir uma instância do chat em nossa máquina, podemos executar o shell do python em outra janela (lembre-se de não encerrar o script que executamos anteriormente) e enviar os comandos para nosso bot rodando localmente da seguinte maneira:
import json
from json.decoder import JSONDecodeError
import requests
HTTP_HOST = "127.0.0.1"
HTTP_PORT = 5000
# Aqui lembre-se que o valor no campo text deve ser o comando
# que desejamos que o bot interprete e que o user_name deve
# ser um usuário válido.
data = {
"channel_name": "bot",
"user_name": "admin",
"text": "bot testing-rpm deploy epic-41237-copy"
}
requests.post(
"http://{host}:{port}/chat/webhook".format( # noqa
host=HTTP_HOST, port=HTTP_PORT
),
headers={"Content-Type": "application/json"},
data=json.dumps(data),
)
Executando esse script, você irá perceber que no terminal no qual levantamos o bot, irá apresentar um erro de comunicação com chat, não se preocupe pois esse comportamento já deve ser esperado já que não temos uma instância do chat executando locamente.
Agora sempre que você precisar executar novamente outro comando, utilize este terminal que abrimos por ultimo e troque os valores do dict data
e realize o post novamente.