Ambiente de testes
O ambiente de testes está disponível em https://seis-lab-data.naturalgis.pt
Os deployments do ambiente de testes são geridos por uma instância woodpecker e o
workflow relevante pode ser encontrado no diretório .woodpecker deste repositório. Os deployments
são desencadeados por GitHub actions, através de uma notificação webhook que é enviada pelo
workflow .github/deployment.yml.
sequenceDiagram
participant user AS programador
box GitHub
participant repo AS repositório de código fonte seis-lab-data
participant gh AS GitHub actions
participant registry AS registo de imagens docker
end
box Ambiente de testes
participant wp AS Woodpecker
end
participant bot AS bot telegram
activate user
user ->> repo: push commit para o ramo main
deactivate user
activate repo
repo ->> gh: desencadear workflow `ci`
deactivate repo
activate gh
gh ->> gh: executar workflow `ci`
gh ->> registry: publicar imagem docker
deactivate gh
activate registry
registry ->> gh: desencadear workflow `deployment`
deactivate registry
activate gh
gh ->> gh: executar workflow `deployment`
gh ->> wp: enviar webhook de deployment
deactivate gh
activate wp
wp ->> repo: pedir código fonte
activate repo
repo -->> wp: código fonte
deactivate repo
wp ->> registry: pedir imagem docker construída
activate registry
registry -->> wp: imagem docker
deactivate registry
wp ->> wp: fazer deployment do código
wp ->> bot: enviar notificação de deployment
activate bot
bot ->> user: notificar resultado do deployment
activate user
deactivate user
deactivate bot
deactivate wp
O Woodpecker está a correr em https://ci.seis-lab-data.naturalgis.pt
Para além do conteúdo da mensagem webhook, os deployments dependem de a instância woodpecker ter os seguintes segredos definidos:
github_user- Nome do utilizador GitHub que interage com o registo de contentores GitHub e obtém imagens do projetogithub_pat- Personal Access Token associado ao utilizador, para autenticação no registo de contentorestelegram_bot_token- Token para o bot telegram que envia notificações relacionadas com deploymentstelegram_chat_id- Id da conversa telegram onde as notificações relacionadas com deployments devem ser enviadas
No nó do ambiente de testes, os artefactos relevantes de deployment estão localizados em
/opt/seis-lab-data. Os ficheiros mais relevantes são:
compose.test-env.yaml- ficheiro docker compose que é utilizado pelo workflow de deployment do woodpecker para orquestrar deployments - Este ficheiro é uma cópia do ficheirodocker/compose.test-env.yamldo repositório, que é criado pelo woodpecker durante o deployment. Este ficheiro não deve ser editado manualmente; se for necessário alterá-lo, fazer commit de quaisquer alterações no repositóriocompose-deployment.env, contém variáveis de ambiente utilizadas pelo ficheiro compose e é crucial para os deployments funcionarem corretamente
Existem outros ficheiros relacionados com deployment em /opt/seis-lab-data, que não devem ser modificados.
Nota
Sempre que houver necessidade de ligar manualmente ao ambiente de testes, preferir utilizar um gestor de sessões de terminal, pois manterá a sessão a correr em caso de quebra inesperada de ligação. O byobu é uma boa opção:
# verificar se já existem sessões criadas:
byobu ls
# criar uma nova sessão (dar-lhe o seu próprio nome)
byobu new -s ricardo-silva
# desanexar da sessão premindo a tecla <F6>
# voltar a anexar a uma sessão nomeada (pode anexar-se à sessão de outra pessoa, se necessário)
byobu attach -t ricardo-silva
# a sessão pode ser fechada simplesmente fechando a ligação, i.e. premir <ctrl+d> ou escrever `quit`
Consultar logs
O acesso a logs relacionados com deployment e operação pode ser feito usando as funcionalidades normais do docker.
Nota
O ficheiro compose.test-env.yaml espera encontrar algumas variáveis de ambiente para funcionar
corretamente. Assim sendo, todos os comandos docker devem incluir a indicação do ficheiro que contem
estas variáveis:
docker compose -f compose.test-env.yaml --env-file compose-deplyment.env \
<comando-docker> <nome-serviço>
Os logs de deployment podem ser inspecionados através dos logs da stack compose do woodpecker:
# ver logs dos últimos dez minutos e continuar a seguir os logs
docker logs -f --since 10m woodpecker-woodpecker-server-1
O sistema em execução também usa uma instância traefik como reverse proxy. Esta instância está configurada no seu próprio ficheiro compose e os logs podem ser inspecionados com:
docker logs -f --since 10m traefik-traefik-1
Os logs do serviço seis-lab-data podem ser verificados com:
# exemplo de verificação dos logs do serviço 'webapp'
docker logs -f --since 10m seis-lab-data-webapp-1