天天看点

在MacOSX机器上设置JenkinsCI服务器

在MacOSX机器上设置JenkinsCI服务器

在Mac OS X机器上设置Jenkins CI服务器的指南。您希望在公司中拥有“移动持续集成”,而CI服务器的最终选择是Jenkins。如果您的公司规模很大,并且您很幸运,那么Dev Support或Dev Ops团队将为您完成所有繁重的工作并为您安装。但是,如果不是这种情况,您可能进入了一个可以帮助您的页面。

安装

首先,请避免安装Jenkins作为守护程序启动。

Jenkins Wiki提供了用于Jenkins安装的选项列表,但没有提及Mac OSX。尽管它提到了Docker,但我只听说过有关Docker的好消息。在本文中,我将坚持使用自制软件。在继续操作之前您需要在Mac上安装和配置JDK。

要安装,请运行一个简单的shell命令。

brew install jenkins      

Jenkins将被安装到其中,usr/local而Homebrew实际上会立即告诉您如何将其转变为启动代理。

To have launchd start jenkins at login:    ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgentsThen to load jenkins now:    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist      

这建议您将Jenkins启动代理plist文件符号链接到,~/Library/LaunchAgents但我建议不要这样做。正如您将在接下来看到的,您将需要修改该文件。这意味着,如果您曾经通过Homebrew升级Jenkins,则您在plist中所做的所有更改都将丢失。我的建议是复制它而不是建立符号链接。

更重要的是,一旦通过Homebrew安装后,我便将Jenkins升级委托给Jenkins本身。因此,我固定Homebrew以防止Homebrew升级Jenkins文件。

brew pin jenkins      

现在,您还可以手动控制Jenkins的安装,并且可以从命令行启动/停止它。

# Start.launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
# Stop.launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist      

配置

要了解为什么需要更改plist,请尝试运行Jenkins服务器。尝试一下,创建几个构建项目,这些项目具有一些基础知识,例如签出git仓库和运行简单的build命令。很快您会收到一条错误消息,提示詹金斯(Jenkins)内存不足。这似乎是JVM和Mac OS X的常见问题,我不太确定为什么默认配置不能解决这个问题,可能这是Mac专用的,其他操作系统也可以。无论如何,您需要修改Launch Agent的默认plist文件。这是您需要的并且可能要更改的。

JVM虚拟内存和垃圾回收

  • 告诉JVM使用64位数据模型(如果有)(-d64)。
  • 使用-Xms和Xmx标志设置最小和最大堆大小。512 Mb在大多数时间为我工作。
  • 配置垃圾收集器,类卸载和永久空间。
<string> -d64 </ string>  <string> -Xms512m </ string>  <string> -Xmx512m </ string>  <!-使用并发GC->  <string> -XX:+ UseConcMarkSweepGC </ string>  <string> -XX:+ CMSClassUnloadingEnabled </ string>  <string> -XX:MaxPermSize = 256m </ string>      

HTTP代理

迄今为止,最大的问题和挫折源是公司代理。使用-D选项指定它。

<string>-Dhttp.proxyHost=my-company-proxy-host.com.au</string>  <string>-Dhttp.proxyPort=8080</string>      

端口和前缀

在URL中带有自定义前缀的自定义端口上运行Jenkins。本示例使用默认8080端口和/jenkins前缀,因此您可以像http://yourhostname:8080/jenkins或以往那样访问您的Jenkins仪表板http://youthostname/jenkins。这些参数需要传递给jenkins.warHomebrew安装到的参数/usr/local/opt/jenkins/libexec。

<string>-jar</string>  <string>/usr/local/opt/jenkins/libexec/jenkins.war</string>  <string>--httpListenAddress=127.0.0.1</string>  <string>--httpPort=8080</string>  <string>--prefix=/jenkins</string>      

开机自启

如果计算机重新引导,请启用“RunAtLoad”选项以自动启动服务器。

<key>RunAtLoad</key>  <true/>      

环境变量

如果此plist中的任何命令需要环境变量,这就是定义它们的方式。

<key>EnvironmentVariables</key>   <dict>    <key>HTTP_PROXY</key>    <string>http://my-company-proxy-host.com.au:8080</string>  </dict>      

标准输出和误差

重定向标准输出和标准错误由您决定。虽然听起来是个好主意,但我建议不要将stderr重定向到文件中。我曾经不得不处理Bamboo远程代理在几个月后创建的90 Gb日志文件。

<!--  <key>StandardOutPath</key>  <string>/Users/i4niac/.jenkins/log/output.log</string>  -->  <key>StandardErrorPath</key>  <string>/Users/i4niac/.jenkins/log/error.log</string>      

请注意,Jenkins将其文件放在.jenkins用户主目录下的文件夹中。处理启动代理程序插件时,还必须指定完整路径。log如果还没有文件夹,请创建它。

完整配置

现在放在一起。

<?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>Label</key>  <string>homebrew.mxcl.jenkins</string>  <key>ProgramArguments</key>  <array>    <string>/usr/bin/java</string>    <string>-server</string>    <string>-d64</string>    <string>-Xms512m</string>    <string>-Xmx512m</string>    <string>-Dmail.smtp.starttls.enable=true</string>    <!-- Use Concurrent GC-->    <string>-XX:+UseConcMarkSweepGC</string>    <string>-XX:+CMSClassUnloadingEnabled</string>    <string>-XX:MaxPermSize=256m</string>    <string>-Djava.net.preferIPv4Stack=true</string>    <string>-Dhttp.proxyHost=my-company-proxy-host.com.au</string>    <string>-Dhttp.proxyPort=8080</string>    <string>-jar</string>    <string>/usr/local/opt/jenkins/libexec/jenkins.war</string>    <string>--httpListenAddress=127.0.0.1</string>    <string>--httpPort=8080</string>    <string>--prefix=/jenkins</string>  </array>  <key>RunAtLoad</key>  <true/>
  <key>EnvironmentVariables</key>   <dict>    <key>HTTP_PROXY</key>    <string>http://my-company-proxy-host.com.au:8080</string>  </dict></dict></plist>      

现在,您有了运行24/7并执行稳定CI任务的可靠Jenkins服务器。

提示

要找出Jenkins的启动方式,请查看grep活动进程列表。ps aux | grep java输出将告诉您所有您需要了解的内容。

jenkins   85   0.0  3.8  4633552 636852   ??  Ss   Tue02pm  20:11.30  /usr/bin/java    -Dfile.encoding=UTF-8    -XX:PermSize=256m -XX:MaxPermSize=512m    -Xms512m -Xmx512m    -Djava.io.tmpdir=/Users/Shared/Jenkins/tmp    -Dhttps.proxyHost=my-company-proxy-host.com.au -Dhttps.proxyPort=8080    -Dhttp.proxyHost=my-company-proxy-host.com.au -Dhttp.proxyPort=8080    -jar /usr/local/opt/jenkins/libexec/jenkins.war      --prefix=/jenkins      --httpPort=8080      

使用Homebrew安装,配置为启动代理。配置远非最终的。您将必须安装插件,为git存储库配置SSH密钥,并执行许多其他管理任务,以使您的Jenkins CI盒更快。

历史文章

  • GitLabCI实践专辑
  • Jenkins流水线实践专辑
  • ChatOps微实践

关于作者

泽阳,DevOps领域实践者。专注于企业级DevOps运维开发技术实践分享,主要以新Linux运维技术、DevOps技术课程为主。

在MacOSX机器上设置JenkinsCI服务器

继续阅读