OS X 3.2.1 CI"待定集成"

 verde公寓_401 发布于 2022-12-18 20:27

在过去的几天里,我一直在努力让CI使用运行OS X Server的外部mac mini.但是,我在OS X Server 3.2.1和XCode 6.1b3上遇到了很多问题.

看起来Apple修复了Xcode 6.1b3中的一个问题,该问题没有将正确的配置文件放入Portal.keychain.但是,我的集成现在还没有运行.

运行干净的OS X构建后,XCode服务器将无法集成.我成功连接到服务器并创建了一个机器人.如果我在我的开发机器上访问"SERVER.local",我会看到我创建的机器人.

在此输入图像描述

一切都设置正确(包括立即集成复选框),但我的集成处于"挂起"状态.我检查了system.log,似乎没有发生任何事情.

侧边栏主要

这可能是完全不相关的,但每次我点击挂起的集成时,我都会在system.log中收到此错误:

NSFileCoordinator only handles URLs that use the file: scheme. This one does not:
x-code-xcsbot://XXX

我不确定这是否是OS X服务器3.2.1中引入的新问题,或者它是否只是一个设置问题.显然没有其他人有这个问题,在Google/SO上找不到任何东西.

4 个回答
  • 这仍然在发生,但如果您只是想轻推服务器以唤醒并运行并且不准备删除您的x-code服务器配置(provisioningProfiles,凭据和机器人被删除(我记得)),只需运行此终端命令

    sudo -u _xcsbuildd /Applications/Xcode.app/Contents/Developer/usr/bin/xcsbuildd
    

    请注意,如果您在"应用程序"文件夹中有多个Xcode版本,则可能会对它们进行不同的命名,因此命令可能略有不同.就我而言,我有一个名为'Xcode 6.1.1'的文件.所以命令就是

    sudo -u _xcsbuildd /Applications/Xcode\ 6.1.1.app/Contents/Developer/usr/bin/xcsbuildd
    

    2022-12-18 20:31 回答
  • 您可以使用重新启动而不是从命令行重置来重新启动服务器。这将终止您正在冻结的机器人。

    sudo xcrun xcscontrol --restart
    

    2022-12-18 20:32 回答
  • 在OS X Server中运行XCode beta版本时,似乎会发生这种情况.

    请注意,此命令将❗️删除所有的机器人❗
    运行sudo xcrun xcscontrol --reset重置.

    https://devforums.apple.com/message/1051403#1051403

    2022-12-18 20:33 回答
  • 这是一个解决方案,可以解决问题,而无需重置Xcode Server.

    有什么问题?

    首先,通过检查xcsnginx.log日志文件来检查是否适用此答案:

    sudo tail /Library/Developer/XcodeServer/Logs/xcsnginx.log
    

    在日志末尾搜索以下行:

    nginx: [emerg] SSL_CTX_use_PrivateKey_file("/Library/Developer/XcodeServer/Certificates/xcsnginx.key") failed (SSL: error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
    

    我没有看到日志中的条目,我担心这个答案对你没有帮助.如果您确实看到该条目,则可以继续.

    为什么会这样?

    Xcode Server在内部运行20543名为Nginx的Web服务器(在端口上)xcsnginx,充当某些服务之间的代理.此服务器使用TLS/SSL证书确保通信安全.涉及的文件如下:

    xcsnginx.crt:包含PEM证书.

    xcsnginx.key:包含证书的私钥.

    xcsnginx.pass:包含私钥的密码.

    据我所知,私钥是以未加密的方式存储的,这意味着它xcsnginx.pass应该是空的(并且似乎每次Xcode Server启动时都会重置).

    但是出于某种原因,某些点,私钥xcsnginx.key被导出为加密密钥.我不知道如何以及为什么会发生这种情况,但它确实发生在我的服务器上,所以我认为它也可能发生在你的服务器上.结果是xcsnginx无法加载证书并且无法启动.

    您可以xcsnginx通过执行以下命令来验证未运行:

    pgrep xcsnginx || echo "Not running"
    

    怎么解决?

    我们可以:不是从头开始重置Xcode Server,而是:

    再次从xcsnginx.keychain钥匙串

    恢复以前的证书和密钥

    为...创建新证书和密钥xcsnginx.

    那么让我们来看看每个选项.

    选项1

    证书和私钥的副本存储在xcsnginx.keychain位于的密钥链中/Library/Developer/XcodeServer/Keychains.此密钥链受存储在文件夹中指定的文件XCSNginxKeychainSharedSecret中的密码短语的保护/Library/Developer/XcodeServer/SharedSecrets.

    如果您熟悉OS X钥匙串,则可以从钥匙串中检索证书和密钥.

    然而,使用命令行操作钥匙扣是一个真正的噩梦,所以我就让这个作为一个练习留给读者(或编辑器).

    选项2

    /Library/Developer/XcodeServer/Certificates文件夹可能包含证书和密钥的备份.我们来看看:

    sudo find /Library/Developer/XcodeServer/Certificates -name "*.original"
    

    如果你很幸运,你应该得到以下结果:

    /Library/Developer/XcodeServer/Certificates/xcsnginx.crt.original
    /Library/Developer/XcodeServer/Certificates/xcsnginx.key.original
    /Library/Developer/XcodeServer/Certificates/xcsnginx.pass.original
    

    这意味着您可以恢复原始文件:

    sudo cp /Library/Developer/XcodeServer/Certificates/xcsnginx.crt.original /Library/Developer/XcodeServer/Certificates/xcsnginx.crt
    sudo cp /Library/Developer/XcodeServer/Certificates/xcsnginx.key.original /Library/Developer/XcodeServer/Certificates/xcsnginx.key
    sudo cp /Library/Developer/XcodeServer/Certificates/xcsnginx.pass.original /Library/Developer/XcodeServer/Certificates/xcsnginx.pass
    

    选项3

    如果您无法恢复以前的证书和钥匙串,您可能决定只生成这样的新证书:

    sudo openssl req -new -x509 -newkey rsa:2048 -nodes -out /Library/Developer/XcodeServer/Certificates/xcsnginx.crt -keyout /Library/Developer/XcodeServer/Certificates/xcsnginx.key -subj /CN=your-server.example.com -days 1000 -batch
    

    where your-server.example.com替换为服务器的DNS地址.理想情况下,证书应该由Xcode服务器根证书颁发机构颁发,但使用单签名证书似乎不是问题(就我现在/目前/您的里程可能会有所不同).

    最后

    现在我们必须等到系统xcsnginx再次启动.这应该在一分钟或更短的时间后自动发生.您可以验证xcsnginx确实以:

    pgrep xcsnginx || echo "Not running"
    

    2022-12-18 20:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有