Ir para o conteúdo

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 projeto
  • github_pat - Personal Access Token associado ao utilizador, para autenticação no registo de contentores
  • telegram_bot_token - Token para o bot telegram que envia notificações relacionadas com deployments
  • telegram_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 ficheiro docker/compose.test-env.yaml do 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ório
  • compose-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