Pergunta

Possível duplicata:
Pilha de integração contínua no Windows com filas mercuriais + mercuriais?

Se sim, como é o seu processo de construção?

Estou tendo um tempo difícil (principalmente por causa da minha falta de experiência/compreensão de todas as três ferramentas), fazendo com que o TeamCity execute meus scripts FinalBuilder. No momento, tenho o FinalBuilder gerenciando todos os checkouts de controle de origem e o TeamCity basicamente apenas executando o script FinalBuilder e a leitura nos resultados do teste NUNIT, mas não funciona devido a erros de autenticação ao executar comandos mercuriais em forno.

Foi útil?

Solução

Se você instalou o cliente Kiln na máquina executando seu script FinalBuilder, terá acesso à extensão mercurial "Kilnauth" que deve resolver esse problema para você.

Basta fazer logon na máquina de construção como o usuário que executa o script FinalBuilder e executa manualmente um comando push ou puxe do repositório mercurial que você está tentando usar, você será solicitado a autenticar. Autentique uma vez, e as extensões do cliente do forno se lembrarão dessa autenticação para esse usuário ... e qualquer execução subsequente pelo script FinalBuilder deve se autenticar muito bem.

Isso resolve o problema para você? É a melhor solução, pois não armazena nenhum nome de usuário ou senha na sua máquina. Obviamente, existem outras possibilidades, como alterar o caminho do seu mercurial para usar o formato http: // {nome de usuário}: {senha}@{kiln url} ... mas isso não é tão bom ou seguro quanto a técnica acima.

Isso faz sentido?

Outras dicas

Não sei nada sobre forno, mas comecei a trabalhar para a VSOFT e estou trabalhando em uma ação mercurial para a próxima versão do FinalBuilder. Espero que parte disso ajude.

Você está atendendo via SSH ou SSL? Você pode puxar/empurrar para o repositório da linha de comando? Praticamente qualquer coisa que você possa trabalhar na linha de comando deve ser possível com o FinalBuilder.

Para autenticar para o Bitbucket via SSH, fiz o seguinte:

  • Baixe Puttygen e Pageant
  • Crie uma nova chave SSH em Puttygen
  • Adicione a chave privada para o concurso
  • Adicione a chave pública ao Bitbucket

De lá, eu posso com sucesso

hg push ssh://hg@bitbucket.org/user/repo

NB, também tenho o TortoiseHG instalado e o Mercurial está usando o TortoisePlink como cliente SSH.

Se você estiver usando o SSL, poderá armazenar o combo de nome de usuário/senha em sua ação FinalBuilder. Para transformar uma caixa de texto em um campo de senha, altere o PasswordChar propriedade de #0 para *. Então no ReadData evento, adicione algo como

Page.tbPassword.Text = DecryptString(Properties.PropertyAsString("Token"));

E no WriteData evento, add

Properties.PropertyAsString("Token") = EncryptString(Page.tbPassword.Text);

Quando você adiciona o Token propriedade para sua ação, marque o Property is Hidden from Action Inspector e Property is Read Only in Action Inspector opções.

Para gerar sua string de repositório, você deseja fazer algo assim na ação GetCommandLine evento:

var repo = Context.Properties.PropertyAsString("Repository");
var username = Context.Properties.PropertyAsString("Username");
var password = DecryptString(Context.Properties.PropertyAsString("Token"));
var repo = "ssh://" + username + ":" + password + "@" + repo;

CommandLine.AddArgument("push", repo, qtNone);

NB, não testei esse código, mas espero que isso lhe dê uma ideia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top