Chiunque gestire il loro Continuous Integration con TeamCity, FinalBuilder, e Mercurial (forno)? [duplicare]
-
19-09-2019 - |
Domanda
Eventuali duplicati:
stack di Continuous Integration su Windows con Mercurial + Mercurial Queues?
Se è così, che cosa il vostro processo di compilazione simile?
Sto avendo un momento difficile (per lo più a causa della mia mancanza di esperienza / conoscenza di tutti i 3 strumenti) ottenendo TeamCity per eseguire i miei script FinalBuilder. In questo momento ho FinalBuilder gestione di tutte le estrazioni di controllo di origine e TeamCity fondamentalmente solo l'esecuzione dello script FinalBuilder e la lettura dei risultati dei test NUnit, ma non funziona a causa di errori di autenticazione durante l'esecuzione di comandi Mercurial al forno.
Soluzione
Se avete installato il client Kiln sulla macchina che esegue lo script FinalBuilder, avrete accesso alla "kilnauth" estensione mercuriale che dovrebbe risolvere questo problema per voi.
Basta accedere al sistema di compilazione come l'utente che esegue lo script FinalBuilder ed eseguire manualmente un push o pull comando dal repository Mercurial si sta cercando di usare, ti verrà chiesto di autenticare. Autenticarsi una volta, e le estensioni client Kiln ricorderanno questa autenticazione per l'utente ... e le eventuali esecuzioni successive dallo script FinalBuilder devono autenticare bene.
Questo risolve il problema per te? E 'la soluzione migliore in quanto non memorizza alcun nome utente o la password sul computer. Ci sono ovviamente altre possibilità, come cambiare il percorso del Mercurial per utilizzare il formato http: // {username}: {Password} @ {url} forno ... ma questo non è così bello e sicuro come la tecnica di cui sopra.
Ha senso?
Altri suggerimenti
Io non so niente di Kiln, ma ho appena iniziato a lavorare per VSoft e sto lavorando su un'azione Mercurial per la prossima versione di FinalBuilder. Speriamo che alcuni di questo vi aiuterà.
Stai athenticating tramite SSH o SSL? Si può tirare / spingere al repository dalla riga di comando? Praticamente tutto ciò che si può arrivare a lavorare da linea di comando dovrebbe essere possibile con FinalBuilder.
Per effettuare l'autenticazione a BitBucket via SSH, ho fatto la seguente:
- scarica puttygen e spettacolo
- creare una nuova chiave SSH in puttygen
- aggiungere la chiave privata per Pageant
- aggiungere la chiave pubblica per BitBucket
Da lì, posso con successo
hg push ssh://hg@bitbucket.org/user/repo
NB, ho anche installato TortoiseHg, e Mercurial sta usando TortoisePlink come il client ssh.
Se si utilizza SSL, è possibile memorizzare la combinazione username / password nella vostra azione FinalBuilder. Per attivare una finestra di TextEdit in un campo password, modificare la proprietà PasswordChar
da #0
a *
. Poi, nel caso ReadData
, aggiungere qualcosa di simile
Page.tbPassword.Text = DecryptString(Properties.PropertyAsString("Token"));
e in caso WriteData
, aggiungi
Properties.PropertyAsString("Token") = EncryptString(Page.tbPassword.Text);
Quando si aggiunge la proprietà Token
per la vostra azione, barrare le caselle Property is Hidden from Action Inspector
e Property is Read Only in Action Inspector
.
Per generare la stringa di repository, ti consigliamo di fare qualcosa di simile nel caso in GetCommandLine
del Azione:
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, non ho ancora testato quel codice, ma si spera che vi dà un'idea.