Estou trabalhando na configuração do IC para um produto. Estou usando um servidor Gitlab interno com o Gitlab CI gerenciando os testes e a implantação do projeto.
A implantação do projeto não é tão simples quanto sincronizar os arquivos. Ele precisa ser criado, verificado por inconsistências e revertido se a atualização não foi bem-sucedida.
Minha preocupação é que a instância do executor do gitlab, que executa os testes e gerencie a integração de um novo código, tenha acesso à instância de produção.
Minha primeira idéia foi que o corredor simplesmente enviasse uma solicitação HTTP POST para o servidor de produção, solicitando que ela se atualizasse e, em seguida, informasse com uma mensagem se ela foi bem-sucedida ou falhou. Dessa forma, o executor não tem acesso ao sistema de arquivos no servidor de produção e o servidor de produção pode decidir se deve ou não responder ao pedido ou não. O problema com essa abordagem é que a solicitação POST provavelmente esperará pela resposta, já que a compilação não é instantânea.
Minha segunda abordagem seria permitir que o gitlab ci runner tivesse login ssh sem senha no servidor de produção com um usuário restrito, cuja única finalidade é construir e executar o projeto, para que o executor possa simplesmente usar um script de estrutura para atualizar o servidor e ter uma falha relatada diretamente. Isso seria fácil de implementar e funcionaria bem com o sistema de CI do Gitlab.
Atualização : Eu tentei a abordagem de malha, mas fui interrompida, quando o corredor parecia não querer fazer login. Então, quais são suas idéias? Alguma mágica do estivador?