Atualmente, estou executando um back-end em produção e quero alterar nossa configuração atual para usar o Docker para implantação e uma ferramenta de CI para testes.
Agora eu tenho um repositório BitBucket com as duas ramificações principais "develop" e "master", e dois servidores separados para desenvolvimento e produção que puxam o código das respectivas ramificações através de um shell script que eu aciono localmente. Dessa forma, testo as alterações manualmente em um ambiente completamente isolado com um servidor dev e um banco de dados dev antes de mesclar para o mestre e implementar na produção.
git Repository dev-server prod-server
| +----------+ +----------+
|-- develop | | | |
|-- master | pulls | | pulls |
| develop | | master |
| | | |
+----------+ +----------+
Eu quero mudar isso escrevendo testes e usando o Docker e uma ferramenta de CI como o Drone (é um Go backend) ou o Jenkins, mas não tenho ideia de como tudo isso funciona junto. Eu já li bastante sobre o Docker e a maioria dos tutoriais supõe que você desenvolva localmente e implemente o contêiner diretamente em um servidor de produção. Também acho que a ferramenta de CI deve estar localizada no servidor de desenvolvimento?
Alguém pode me explicar como os fluxos possíveis seriam no meu cenário?
Exemplo: eu faço uma alteração localmente e, em seguida, envio "desenvolver". O servidor de desenvolvimento possui um gancho git que reconhece o push e, de alguma forma, aciona o servidor de IC que executa os testes. Se os testes passarem COULD mescla desenvolver para mestre (este CD agora?), O que novamente aciona um gancho no servidor de produção que constrói a nova imagem e executa o contêiner. Isso esta certo? Além disso, qual servidor está hospedando o docker repo agora?