我对在Mac上设置Jenkins奴隶感到困惑。谷歌似乎对java web启动选项(https://blog.codecentric.de/en/2012/01/continuous-integration-for-ios-projects-with-jenkins-ci/)有一个很好的答案,但是有人可以通过ssh启动选项澄清在mac上设置jenkins slave的步骤。
目前jenkins大师正在Centos上。据我所知,要在Mac上制作一个奴隶,你应该:1。转到Mac并为jenkins创建一个新的成熟的sudo用户,其中包含代理本身所在的主文件夹。 2.在Jenkins Web界面中将节点设置为ususal linux节点,并为此用户提供login | pass。 3.将mac build限制为此节点。
但是我不确定第一步是否正确 - 我是否需要手动设置jenkins用户,具有提升的权限,登录机器的能力等等。也许可以创建一个“隐藏”用户 - 如果是这样,有人可以帮忙或指向好的手册吗?我是mac终端的新手,所以不确定步骤是否与linux相同或不同。
谢谢。
你确实需要Mac上的用户Jenkins大师将用来ssh。但这与设置Linux slave完全相同。
用户是否需要提升权限取决于您希望Jenkins对该帐户执行的操作。
您还需要使用管理员用户从控制台登录Mac,并在“系统偏好设置”的“共享”面板中打开远程登录。在同一个面板中,您可以限制远程登录到特定用户或允许所有用户登录。
如果我是你,我会使用“系统偏好设置”中的“用户和组”面板为Jenkins创建普通用户。使用命令行工具创建隐藏用户是可能的,但它有点涉及。如果你真的想去那里,你可以检查Jenkins Mac安装程序中的postinstall脚本如何创建一个名为jenkins的用户:
https://github.com/jenkinsci/packaging/blob/master/osx/scripts/postinstall-launchd-jenkins
刚刚完成设置我的Mac mini slave以进行ssh访问。很多旧教程和有不必要信息的教程。我不得不重新启动我的迷你重新开始,这次它有效。
快点(这是通过终端/命令行,没有Ubuntu没有其他):
ssh-keygen
创建ssh私钥和公钥。在我的情况下,密钥是用-C "name"
给我的,但没有密码,文件名为id_rsa
和id_rsa.pub
。保持私有(非.pub
)密钥以供Jenkins Credentials稍后使用,并且为了测试目的,在验证事情是否适用于ssh连接而不必重新启动Jenkins代理时,私钥应该保存在/Users/<username>/.ssh
目录中,并且可以读取权限和所有权。本地测试主机的用户,如果我正在测试它mkdir .ssh
在远程Mac mini slave的/User/jenkins/
目录中.ssh
目录和任何子目录或文件的所有者是jenkins而不是root(sudo chown ...
)。.ssh
目录和任何子目录或文件的权限是可读和可写的(如果你没有正确设置所有权,为了更改权限,你将需要使用sudo。如果你使用sudo设置权限,你避风港没有正确设置jenkins用户的所有权)ssh [email protected]
上,以确保您可以使用密码身份验证ssh到远程Mac mini。您可能会收到一个请求以确定新主机(在远程Mac mini的IP地址)。ssh-copy-id -i
将id_rsa.pub
的内容(无论是在.ssh
或其他地方)复制到authorized_keys找到here。pbcopy<~/.ssh/id_rsa
)复制字符串,包括==== begin
和end private key ======
部分,然后保存。/Users/jenkins
。主持人:Mac mini的静态IP地址。主机密钥验证策略:手动可信密钥验证策略。检查需要手动验证初始连接我阅读旧教程的错误是:
试图在/etc/ssh/sshd_config
中删除密码的需要。这是完全没必要的。另外,我可能没有注意到所有者和/或搞砸.ssh
,.ssh/authorized_keys
和.ssh/id_rsa
在远程和本地机器上的权限。
最初,当我在jenkins中创建凭证时手动输入私钥时,我删除了===== Begin private key
和======End private key
。那些应该包括在内。 id_rsa的文件应保留原样。
find / -name Jenkins
找到它。/usr/bin/java -Dfile.encoding=UTF-8 -XX:PermSize=256m -XX:MaxPermSize=512m -Xms256m -Xmx512m -Djava.io.tmpdir=/Users/Shared/Jenkins/tmp -jar /Applications/Jenkins/jenkins.war --httpPort=8080