De acordo com sua pergunta e os comentários:
My problem is that - despite this output - changes pushed to the module's repository are not reflected by the files below
/etc/puppetlabs/code/environments
.
r10k
não sabe sobre HEAD
. HEAD
não é determinista, por isso não é possível usá-lo assim.
Se você quiser acompanhar um branch
, use algo como:
mod 'mymodule',
:git => 'file:///srv/git/mymodule.git',
:ref => 'master'
To keep the setup simple I wanted to avoid branching. Instead I wanted to always use the latest commit of the module repository for testing and use another stable tag for production which I move forward whenever the code is in acceptable shape.
Honestamente, não tenho certeza de como seu fluxo de trabalho se parece:
-
Você tem um repositório de controle com dois ramos,
master
etesting
.master
é o código de produção estável, enquanto você está usandotesting
para desenvolvimento? -
Você está enviando um novo código para
testing
e, assim que atingir um estado com o qual se sente confortável, você está mesclandotesting
emmaster
? -
Depois disso, você gostaria de marcar o estado atual em
master
asstable
, que seus agentes devem usar? -
Como é o restante da sua infraestrutura? Quantos agentes estão no lugar? Como você testa seu código, ou seja, como você diz a {one, all} (?) Agentes: "Por favor, use este código saindo deste ambiente"?
-
Siga as etapas acima: se você codifica em
master
etesting
, como seus agentes sabem qual ambiente usar? -
Se você pudesse elaborar os pontos acima e me dissesse mais detalhes (e por favor adicione isso à sua pergunta, os comentários podem ser muito limitados para isso), eu posso ajudar e estender esta resposta. / p>
-
Enfim, boa sorte!
puppet
er10k
, especialmente se acoplados a ganchos git, são uma configuração incrível! Usando isso sozinho, é ótimo! :)
Informação adicional:
-
Obrigado por elaborar o seu fluxo de trabalho.
-
Se você não é tão versátil ainda com o git, e especialmente se você está fazendo muitas ramificações e mesclagens e tem medo de conflitos de mesclagem, certifique-se de ler sobre gase rebase , que faz
reapply commits on top of another base tip
-
Diga que você está na seguinte situação:
- Você está ramificando
master
parafeature1
. - Você faz algum trabalho em
file1:3-6
emfeature1
. - Você está alterando
file1:7-10
diretamente emmaster
para corrigir um bug urgente. - Você deseja mesclar
feature1
de volta emmaster
. - Normalmente, nesse momento, você receberia um conflito de mesclagem, porque o mesmo arquivo foi modificado nas duas ramificações.
- Se você
git rebase master
emfeature1
antes da fusão, isso "puxará" o estado / commit (s) mais recente parafeature1
, nesse caso a correção do bug. - Agora faça a mesclagem, sem conflitos.
- Você está ramificando
- Eu não me limitaria a apenas uma ramificação nos repositórios do módulo. Como você lida com o teste de novo código lá dentro? Não é apenas o seu repositório de controle que precisa melhorar ao longo do tempo.
-
Para tornar isso mais confortável, use outro recurso de
r10k
:# Track control branch and fall-back to master if no matching branch exists mod 'mymodule', :git => 'file:///srv/git/mymodule.git', :branch => :control_branch, :default_branch => 'master'
-
Isso permitirá que você faça o seguinte, por exemplo, em uma situação na qual gostaria de desenvolver um novo recurso em seu módulo:
- No seu repositório de controle, filial de
master
atesting
. - No repositório de módulos, a ramificação de
master
totesting
. - Sem alterar seu
Puppetfile
, seu agente fantoche que usa a ramificaçãotesting
de seu repo de controle agora também usa a ramificaçãotesting
do repo de seu módulo. - Desenvolva até estar satisfeito.
- No repositório de módulos, mescle
testing
emmaster
. - O novo código que você desenvolveu agora vai para todos os seus agentes fantoches que usam o código de produção, ou seja, a ramificação
master
do repo de controle.
- No seu repositório de controle, filial de
-
Uma última nota, por enquanto: parece que você é a única pessoa que está desenvolvendo o código, então talvez isso não seja tão importante para você, mas apenas para informá-lo:
-
Se duas ramificações são muito limitadas, é bem possível usar um ambiente diferente durante um agente fantoche sem modificar a configuração, mas fornecendo um parâmetro:
puppet agent -t --environment ${FEATURE_BRANCH}
-
- É tudo por agora que consigo pensar. Espero que isso ajude, novamente, boa sorte e tudo de bom!