Implantação contínua com gitignore

12

Ao fazer uma implantação contínua com o Git, como você lida com arquivos ignorados no gitignore? Esses arquivos são ignorados por motivos de privacidade (ou seja, não os querem enviados para outros repositórios remotos, como o GitHub), mas com esses arquivos ignorados não sendo enviados para o repositório de implantação contínua, o aplicativo não será executado (pois os arquivos ignorados são necessário para o software funcionar corretamente).

Como as pessoas costumam fazer isso? Nesse caso, o Git não é o melhor candidato para implantação contínua devido a arquivos ignorados?

user3175663
fonte
2
Estou votando para encerrar esta questão como fora de tópico, porque ela não mostra um esforço mínimo de pesquisa básica.
Scant Roger
3
Não estou vendo falta de esforço de pesquisa. O OP parece entender o que o gitignore faz perfeitamente bem. O que vejo é um problema XY, mas, como X e Y são explicados na pergunta, Doc conseguiu escrever uma resposta decente que, esperançosamente, resolve o problema real do OP.
Ixrec
1
@ ScantRoger: honestamente, a pergunta poderia ser escrita melhor, mas está longe de ser tão ruim que merece uma votação apertada.
Doc Brown

Respostas:

14

Se o seu software não funcionar sem esses arquivos, você terá um problema com qualquer tipo de implantação, manual, automática ou contínua, com qualquer tipo de VCS ou mesmo sem nenhum VCS. Portanto, altere seu software para que ele possa ser executado realmente sem esses arquivos (por exemplo, ele pode assumir algum tipo de "parâmetros padrão" se os arquivos estiverem ausentes) ou forneça uma versão desses arquivos adequados para implantação que são copiados ( como parte da etapa de implantação) no ambiente de destino, caso não exista uma versão "privada" desses arquivos.

Se você estiver falando de algo como um arquivo contendo credenciais de banco de dados para efetuar logon no servidor, que, por motivos de segurança, não deseja estar no controle de versão, precisará colocar esse arquivo no ambiente de implantação uma vez , provavelmente manualmente , por uma pessoa que possui direitos suficientes ou conhece a senha. Mas isso é intencional e não deve impedir você de implantar novas versões diárias do seu software. Apenas verifique se os arquivos de credenciais em vigor não são substituídos ao implantar uma nova versão.

Doc Brown
fonte
Concordado, se o check-out do vcs não for suficiente para compilar e executar, embora com uma capacidade reduzida, sua árvore de origem estará incompleta.
Newtopian
@ Newtopian: observe que isso pode ser realmente intencional e correto (veja meu exemplo).
Doc Brown
2

Outra opção é armazenar as informações confidenciais dentro da sua ferramenta de implantação. E a configuração da ferramenta de implantação em um repositório de origem privado separado.

Deixar os dados confidenciais na máquina de destino funciona, mas pode apodrecer - alguém muda isso sem seguir os procedimentos, a máquina freia e ninguém se lembra das configurações corretas, etc ...

O Saltstack, por exemplo, tem https://docs.saltstack.com/en/latest/topics/pillar/index.html

Patrick
fonte