iOS 持续化集成Mac优雅使用指南iOS开发笔记

Mac jenkins 开机启动设置

2017-05-15  本文已影响1141人  见闻无限

更新一把,脚本的方式虽然可以做到开机启动的功能,但是始终有一个命令行程序在前台,非常不爽。
尝试通过Mac系统下的sudo launchctl load 命令完成Jenkins的开机启动功能。

一、launchctl load方式开机启动

参考其他的服务可以知道,Mac系统下的 /Library/LaunchAgents 和 /Library/LaunchDaemons 目录是用来存放一些开机启动的服务的plist。
那么homebrew安装的Jenkins是否可以通过这个方式来做呢?

homebrew启动分析

我们注意到,在homebrew安装完成的时候,提供了两个启动Jenkins的方式

install

使用 brew services start jenkins 开启的时候,其实是使用 /usr/local/Cellar/jenkins/2.61/homebrew.mxcl.jenkins.plist 这个plist文件完成的,打开这个文件可以我们看到

plist

可以看出来,服务是通过 /usr/bin/java 来启动的,目标任务就是/usr/local/Cellar/jenkins/2.61/libexec/jenkins.war

启动成功后可以看到

start

使用launchctl load启动

尝试通过以下命令来开启服务

sudo launchctl load -w /usr/local/Cellar/jenkins/2.61/homebrew.mxcl.jenkins.plist

提示权限不足,Path had bad ownership/permissions ,使用下面的命令配置权限

sudo chown root /usr/local/Cellar/jenkins/2.61/homebrew.mxcl.jenkins.plist

在此执行的时候成功了。
打开localhost:8080准备配置的时候,发现了问题

started

和之前启动的不是同一个服务,WTF!
原来在Jenkins安装的时候,默认会在当前xxxx用户和root用户下都生成一份工作目录,launchctl load 默认拉起的是root下的。

修改环境变量

这时候需要在plist文件中加入JENKINS_HOME的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
  <key>EnvironmentVariables</key>
  <dict>
    <key>JENKINS_HOME</key>
    <string>/Users/xxxxxxxxxxxxxx/.jenkins</string>
  </dict>
    <key>Label</key>
    <string>com.jenkins.jenkins</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/java</string>
      <string>-Dmail.smtp.starttls.enable=true</string>
      <string>-jar</string>
      <string>/usr/local/Cellar/jenkins/2.61/libexec/jenkins.war</string>
      <string>--httpListenAddress=127.0.0.1</string>
      <string>--httpPort=8080</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>

重新执行launchctl load,这个时候Jenkins就正常启动了



二、脚本方式开机启动

命令行安装的jenkins不自备开机启动功能,每次重启后都要命令行执行启动,非常麻烦,使用以下步骤可以在每次开机后自动拉起一个jenkins的命令行。

创建开机启动脚本 jenkinsBoot.sh

加入启动jenkins代码

1

设置脚本权限

sudo chmod 777 xxxx/jenkinsBoot.sh

2

设置脚本打开方式

3

设置脚本引用,使脚本可执行

chmod +x xxxx/jenkinsBoot.sh

加入用户的登录项

4

重新启动计算机,会发现自动执行了jenkinsBoot.sh这个脚本。

上一篇 下一篇

猜你喜欢

热点阅读