Jeder verwalten ihre Continuous Integration mit Teamcity, Finalbuilder und Mercurial (Kiln)? [Duplikat]
-
19-09-2019 - |
Frage
Mögliche Duplizieren:
Continuous Integration-Stack unter Windows mit Mercurial + Mercurial Queues?
Wenn ja, wie sieht Ihr Build-Prozess aussehen?
Ich habe eine schwierige Zeit (vor allem wegen meiner mangelnden Erfahrung / Verständnis für alle 3-Tools) bekommen Teamcity meine Finalbuilder-Skripte ausführen. Im Moment habe ich Finalbuilder alle Quellcodeverwaltung Auscheckvorgänge Verwaltung und Teamcity im Grunde nur die Finalbuilder Skript ausgeführt und in den NUnit Testergebnisse zu lesen, aber es funktioniert nicht aufgrund Authentifizierungsfehler während Mercurial Befehle Ofen ausgeführt wird.
Lösung
Wenn Sie den Kiln-Client auf dem Ihr Skript ausgeführt Finalbuilder Maschine installiert haben, erhalten Sie Zugriff auf die „kilnauth“ Quecksilber-Erweiterung haben, die dieses Problem für Sie lösen sollte.
Just Anmeldung auf den Build-Rechner als Benutzer, der die Finalbuilder Skript ausgeführt und manuell eine Push ausführen oder einen Befehl aus dem Mercurial-Repository ziehen Sie zu verwenden sind versuchen, werden Sie zur Authentifizierung aufgefordert. Authentifizieren einmal, und die Kiln-Client-Erweiterungen werden sich erinnern, diese Authentifizierung für diesen Benutzer ... und alle nachfolgenden Läufe durch die Finalbuilder-Skript sollte authentifizieren gut.
Ist dies das Problem für Sie lösen? Es ist die beste Lösung, da es keinen Benutzername oder Passwort auf Ihrem Rechner speichert. Natürlich gibt es andere Möglichkeiten, wie Sie den Pfad der Mercurial Änderung des Formats http: // verwenden {username}: {Passwort} @ {Ofen url} ... aber das ist nicht so schön oder sicher wie die Technik, die oben.
Ist das sinnvoll?
Andere Tipps
Ich weiß nichts über Kiln, aber ich habe gerade angefangen für VSoft arbeiten und bin auf einer Mercurial Aktion für die nächste Version von Finalbuilder. Hoffentlich einige dieser helfen.
athenticating Sie per SSH oder SSL? Können Sie / Push-to-Repository von der Kommandozeile ziehen? So ziemlich alles, was man bekommen kann von der Kommandozeile arbeiten sollte möglich sein, mit Finalbuilder.
zu BitBucket via SSH zu authentifizieren, habe ich die folgenden:
- download puttygen und Festzug
- Erstellen Sie einen neuen SSH-Schlüssel in puttygen
- fügen Sie die privaten Schlüssel Zu
- fügen Sie den öffentlichen Schlüssel zu BitBucket
Von dort aus kann ich erfolgreich
hg push ssh://hg@bitbucket.org/user/repo
NB, ich auch haben TortoiseHG installiert und Mercurial verwendet TortoisePlink als SSH-Client.
Wenn Sie SSL verwenden, können Sie den Benutzernamen / Passwort Combo speichern in Ihrem Finalbuilder Aktion. Um ein TextEdit-Box in ein Passwortfeld zu aktivieren, ändern Sie die PasswordChar
Eigenschaft von #0
*
. Dann in der ReadData
Ereignis, fügen Sie so etwas wie
Page.tbPassword.Text = DecryptString(Properties.PropertyAsString("Token"));
und im WriteData
Ereignisse, fügt
Properties.PropertyAsString("Token") = EncryptString(Page.tbPassword.Text);
Wenn Sie die Token
Eigenschaft auf Ihre Aktion hinzufügen möchten, kreuzen Sie die Property is Hidden from Action Inspector
und Property is Read Only in Action Inspector
Optionen.
Ihr Repository Zeichenfolge zu generieren, Sie wollen in der Aktion des GetCommandLine
Ereignis, so etwas tun:
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, ich habe diesen Code nicht getestet, aber hoffentlich gibt es Ihnen eine Idee.