有人管理与 TeamCity、FinalBuilder 和 Mercurial (Kiln) 的持续集成吗?[复制]
-
19-09-2019 - |
题
如果是这样,您的构建过程是什么样的?
我在让 TeamCity 运行我的 FinalBuilder 脚本方面遇到了困难(主要是因为我缺乏经验/对所有 3 个工具的理解)。现在,我有 FinalBuilder 管理所有源代码控制检查,而 TeamCity 基本上只是运行 FinalBuilder 脚本并读取 NUnit 测试结果,但由于在向 kiln 执行 Mercurial 命令时出现身份验证错误,它不起作用。
解决方案
如果您已经安装运行你的FinalBuilder脚本的计算机上的客户端窑,你将有机会获得“kilnauth”善变的扩展,它应该解决这个问题你。
只需登录到构建机器运行该脚本的FinalBuilder和手动执行一个推或你想要使用Mercurial库拉命令的用户,你会被要求进行身份验证。验证一次,窑客户端扩展会记住这个认证此用户...并通过脚本的FinalBuilder任何后续运行中应认证就好了。
这是否能解决这个问题吗?这是最好的解决方案,因为它不存储在计算机上的任何用户名或密码。显然还有其他的可能性,例如更改水银的路径使用格式为http:// {用户名} {}密码@ {窑URL} ...但是这是不是漂亮或安全如上的技术。
这是否有道理?
其他提示
我对 Kiln 一无所知,但我刚刚开始为 VSoft 工作,并且正在为 FinalBuilder 的下一版本开发 Mercurial 操作。希望其中一些会有所帮助。
您是通过 SSH 还是 SSL 进行身份验证?您可以从命令行拉/推到存储库吗?几乎所有可以通过命令行进行工作的内容都应该可以通过 FinalBuilder 实现。
为了通过 SSH 对 BitBucket 进行身份验证,我执行了以下操作:
- 下载 puttygen 和 pageant
- 在 puttygen 中创建新的 SSH 密钥
- 将私钥添加到选美比赛中
- 将公钥添加到 BitBucket
从那里,我可以成功
hg push ssh://hg@bitbucket.org/user/repo
注意,我还安装了 TortoiseHG,并且 Mercurial 使用 TortoisePlink 作为 ssh 客户端。
如果您使用 SSL,则可以将用户名/密码组合存储在 FinalBuilder 操作中。要将文本编辑框变成密码字段,请更改 PasswordChar
财产来自 #0
到 *
. 。然后在 ReadData
事件,添加类似的内容
Page.tbPassword.Text = DecryptString(Properties.PropertyAsString("Token"));
并在 WriteData
事件,添加
Properties.PropertyAsString("Token") = EncryptString(Page.tbPassword.Text);
当您添加 Token
属性到您的操作,勾选 Property is Hidden from Action Inspector
和 Property is Read Only in Action Inspector
选项。
要生成存储库字符串,您需要在操作中执行类似的操作 GetCommandLine
事件:
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);
注意,我还没有测试过该代码,但希望它能给您一个想法。