Pergunta

Eu tenho um instalador NSIS que previamente construída usando scripts NAnt que copiar alguns arquivos e correr makensis.exe via tarefa um exec para construir o exe instalador. Depois da conclusão do script de nant, eu tenho a estrutura Compelte para o nosso CD e também o nosso download.

Eu estava apenas fazendo um get de sourcesafe para um ambiente de trabalho não utilizados e usá-lo como uma caixa de construção, compilando lá. Às vezes, nós teríamos um par de arquivos verificados em que consertar algo crítico. Nesses casos eu iria para a caixa de compilação e ficar muito seletivamente apenas os arquivos, para evitar que outros arquivos alterados que não estamos prontos para liberar ainda. Basicamente, eu sou capaz de permitir o desenvolvimento de continuar e incluir certos arquivos alterados para o instalador para a liberação seletiva.

Agora não temos mais uma caixa livre, ea necessidade de construir do nosso servidor. Então, estou a criação de CI fábrica para que o desenvolvedor pode chutar a construir fora sem comunicação remota no servidor. A questão que eu estou lutando com, é a melhor maneira de continuar a permitir que esta controle de mudanças seletiva para ocorrer. O conceito padrão do CI que implementa CI fábrica é bom para "cabeça" interna de desenvolvimento. No entanto, eu também quero configurar um projeto CCNet que é executado somente sob demanda através de um Desenvolver Força para este tipo "divulgação pública" de construção.

Este é o que eu cérebro já invadiram até agora, sem ter certeza de quão bem este trabalho, se em tudo (ainda descobrir o que CCNet e CI fábrica são tudo). O "lançamento público" projeto CCNet config / construção seria a configuração de tal forma que seria não obter mais recente. Modificações faria não gatilho uma compilação. Desde que o outro projeto CCNet que está usando a metodologia CI padrão (vamos chamá-lo de "projeto de CI") de conseguir mais tardar quando forem detectadas alterações, em seguida, estes dois projectos não podem compartilhar o mesmo diretório de trabalho. Assim, o "release público" iria precisar de uma cópia de trabalho diferente, de modo que seus arquivos não serão atualizados quando construção do projeto CI é acionado. O desenvolvedor precisaria remoto no servidor, um VSS, seletivamente fazer a entrar na "divulgação pública" 's cópia de trabalho, e depois forçar uma compilação através CI Factory.

A desvantagem é que vejo com isso é
1) Ter que remoto para seletivamente não fica.
2) Eu não tenho nenhuma idéia de como permitir que um único projeto de CI Fábrica de ter duas cópias diferentes de trabalho da pasta do produto, de modo que cada bloco de configuração do projeto tem a sua própria.
3) Tenho medo de que tipo de estranheza isso pode causar. Eu não tenho certeza ainda como especificar um bloco de controle de origem no bloco de configuração projeto CCNet, mas impedi-lo de fazer um receber as últimas quando se constrói. Eu ainda estou descobrindo aos poucos o que as coisas são em scripts e pode ser facilmente retirado sem quebrar outras coisas, contra o que não é feito para ser mucked ao redor com e / ou não é configurável.

Eu realmente gostaria de ouvir sobre como os outros lidam com esta questão de liberar seletivamente mudanças, se você tem uma situação similar. Estou constrangido a VSS, por isso a minha necessidade imediata é resolver isso com isso em mente, mas ao mesmo tempo eu estaria interessado em saber como você conseguir isso com outros sistemas de controle de origem. Eu acho que você provavelmente teria um ramo que é o seu mais recente ramo desenvolvimentos, e, em seguida, mesclar as alterações no tronco sempre que quiser liberá-los? Eu realmente não confio em VSS para ramificação / fusão, e acho que os conceitos de ramificação pode ser um pouco demais despesas gerais e curva de aprendizado para esta loja. Como eu disse, porém, histórias com outros sistemas de controle de origem seria o conhecimento futuro útil para mim.

Agradecemos antecipadamente.

Foi útil?

Solução

Você precisa de uma estrutura de ramificação em seu repositório para facilitar isso. Algo como o método ramo release. Apenas selecione os indivíduos podem comprometer-se a este ramo (ou tem uma versão / estável para isso). Configurar seus lançamentos CI manuais para puxar a partir do ramo release como a liberação promover noite para marco ou final de lá. Eu não gosto da idéia de modificar manualmente as coisas em sua máquina de compilação. Configure as mudanças no controle de versão, em um lugar seguro para preparar a sua liberação e deixe CI construir a partir daí, mas manualmente acionado.

Confira essas padrões de ramificação . Sugeri C3, codeline-per-lançamento, muitas vezes chamado de ramificação release.

Aqui é uma artigo em VSS ramificação que inclui um link para a fusão.

Looks Esta questão href="https://stackoverflow.com/questions/404948/practical-way-to-commit-changes-in-source-control-to-multiple-branches"> similar.

Talvez você poderia mover para outro sistema de controle de origem com melhor suporte para este tipo de coisa. Todas as sugestões de pessoas MS lá fora?

scroll top