Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在MacOSX机器上设置JenkinsCI服务器

在MacOSX机器上设置JenkinsCI服务器

作者头像
DevOps云学堂
发布于 2020-07-24 10:08:33
发布于 2020-07-24 10:08:33
2.6K00
代码可运行
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成
运行总次数:0
代码可运行
在Mac OS X机器上设置Jenkins CI服务器的指南。您希望在公司中拥有“移动持续集成”,而CI服务器的最终选择是Jenkins。如果您的公司规模很大,并且您很幸运,那么Dev Support或Dev Ops团队将为您完成所有繁重的工作并为您安装。但是,如果不是这种情况,您可能进入了一个可以帮助您的页面。

安装

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew install jenkins

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
To have launchd start jenkins at login:
    ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
Then 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文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew pin jenkins

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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)。
  • 使用-XmsXmx标志设置最小和最大堆大小。512 Mb在大多数时间为我工作。
  • 配置垃圾收集器,类卸载和永久空间。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <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选项指定它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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”选项以自动启动服务器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <key>RunAtLoad</key>
  <true/>

环境变量

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<key>EnvironmentVariables</key>
   <dict>
    <key>HTTP_PROXY</key>
    <string>http://my-company-proxy-host.com.au:8080</string>
  </dict>

标准输出和误差

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--
  <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如果还没有文件夹,请创建它。

完整配置

现在放在一起。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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输出将告诉您所有您需要了解的内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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盒更快。

分享结束

关于作者

泽阳,DevOps领域实践者。专注于企业级DevOps运维开发技术实践分享,主要以新Linux运维技术、DevOps技术课程为主。丰富的一线实战经验,课程追求实用性获得多数学员认可。课程内容均来源于企业应用,在这里既学习技术又能获取热门技能,欢迎您的到来!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
xwiki管理指南-安装教程
XWiki是一款基于java所编写的wiki,它可以运行在如Tomcat,Jetty,JBoss,WebLogic,WebSphere等Servlet容器上并利用关系型数据库(HSQL, MySQL等)来存储数据,大部分数据库产品都可以在XWiki上运行但是必须进行正确的设置。
lovelife110
2021/01/14
2.8K0
Jenkins本地搭建权限问题解决 for Mac
但是jenkins不会用本地的用户去构建,任何创建的文件都是“jenkins”用户所有,这会造成很多权限问题,无法调用自己写的脚本,执行shell会出现没有权限的错误。
沈宥
2022/05/09
1.1K0
Jenkins本地搭建权限问题解决 for Mac
【LNMP】Mac +Nginx + PHP7.* + Mysql5.7
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
redszhao
2021/08/09
8220
【LNMP】Mac +Nginx + PHP7.* + Mysql5.7
使用 burp 抓取命令行工具数据
需要设置全局变量,将本地默认代理设置为 burp 的代理服务地址和端口,可以使用如下命令:
信安之路
2021/04/14
2.9K0
使用 CoreDNS 来应对 DNS 污染
CoreDNS 是新晋的 CNCF 孵化项目,前几天已经从 CNCF 正式毕业,并正式成为 Kubernetes 的 DNS 服务器。CoreDNS 的目标是成为 cloud-native 环境下的 DNS 服务器和服务发现解决方案,即:
米开朗基杨
2019/08/29
6.5K0
使用 CoreDNS 来应对 DNS 污染
Mac下使用Jenkins踩坑 Fastlane自动化iOS打包写在前面使用FastlaneJenkins 踩坑后记
最近项目在做新项目时经常发现有很多小bug需要改动,一改就要重新打包,哪怕是一个很小的项目,光是编译打包导出,再上传到测试平台没个十几分钟也是下不来的。本来的话也只是想找个自动打包的脚本,找了几个发现都不怎么理想,于是就瞄准了 Jenkins + Fastlane
gwk_iOS
2018/08/23
1.8K0
Mac下使用Jenkins踩坑 Fastlane自动化iOS打包写在前面使用FastlaneJenkins 踩坑后记
Mac OSX 下安装nginx mysql php 本地开发环境
温馨提示:本文的一些资源可能会因为gfw的原因无法正常安装,建议挂上科学上网工具进行部署。
李维亮
2021/07/09
1.8K0
转:全新安装Mac OSX 开发者环境 同时使用homebrew搭建 (LNMP开发环境)
Brew 是 Mac 下面的包管理工具,通过 Github 托管适合 Mac 的编译配置以及 Patch,可以方便的安装开发工具。 Mac 自带ruby 所以安装起来很方便,同时它也会自动把git也给你装上。官方网站:http://brew.sh 。
全栈程序员站长
2021/05/19
1.4K0
springcloud本地开发的微服务如何调用远程k8s的微服务
一般来说k8s使用的容器网络与开发者的所在的办公网络并不能直接连通,如何在开发环境访问k8s的服务,就成为我们日常开发绕不开的坎。下边就介绍几种可以方便我们在本地环境调用k8s服务方案
lyb-geek
2020/10/10
2.7K0
springcloud本地开发的微服务如何调用远程k8s的微服务
研究consul的service mesh功能
来源:https://jeremy-xu.oschina.io/2018/07/%E7%A0%94%E7%A9%B6consul%E7%9A%84service-mesh%E5%8A%9F%E8%83%BD/
程序猿DD
2018/07/31
1.4K0
研究consul的service mesh功能
开发者的博客写作环境
作为一个开发者,本时有工作中肯定有技术上各种点点滴滴想记下来,毕竟好记忆不如烂笔头。当然使用一个笔记工具完全可以满足这个需求。但同时我在想能否将这些点点滴滴不仅记起来,同时这些知识也成为展现自己技术能力的一张名片呢?自然而然就想到很多大牛的技术博客。进而发现了github+hexo的组合,但我在使用中发现就为了写篇技术博文还得开chrome, iTerm2, Sublime 3三个程序,而且还在这三个程序间频繁切换了,太痛苦了有没有。不能在一个程序里搞定所有的事情吗?经过反复探索,终于找到了一个办法,那就是
jeremyxu
2018/05/10
5650
第2章 Jenkins Server的安装部署方式
本章阐述Jenkins Server的安装部署方式。基于Tomcat、CentOS、MacOS、Docker、Kubernetes、Windows部署。部署后的基础配置。
DevOps云学堂
2020/07/24
1.2K0
第2章 Jenkins Server的安装部署方式
consul的service mesh功能初体验
|作者简介 consul之前一直被当成一个服务发现、分布式KV服务、服务健康检查服务等,但此前发布的1.2版本,宣称其实现了Service Mesh方案。而今年被称为Service Mesh的关键之年,就在这里跟大家分享一下自己的研究结果。 |试用consul的service mesh 升级consul至1.2版本 macOS下升级consul很简单,简单用brew命令就好 brew update consul 为了方便后面修改consul的配置文件,添加一个 -config-dir参数 /usr/l
腾讯云TStack
2018/10/12
1.3K0
consul的service mesh功能初体验
为 Android Studio 或者 Android 项目设置代理
本文记录给 Android Studio 设置代理,并添加白名单。适用于 Jenkins 等 CI/CD 环境。有修改配置文件和命令行2种方式。
他叫自己MR.张
2019/07/01
3K0
macOS Big Sur 使用全新虚拟化框架创建超轻量虚拟机!
之前我给大家介绍过如何在 macOS 上使用 multipass 创建轻量级虚拟机来使用 Podman,众小伙伴纷纷齐说真香。今天我要给大家介绍一个全新的黑科技,利用 macOS Big Sur 引入的全新虚拟化框架 Virtualization Kit[1] 来创建更加轻量级的虚拟机。准确地说,这个最新的虚拟化框架并不能直接使用,它只是提供了 API,为许多设备类型定义了标准接口,包括网络、存储等设备,且支持 Virtio 标准。要想使用该框架来创建管理虚拟机,需要对其进行封装,构建出一个易于使用的工具,目前最优秀的就是 vftool[2]。
程序猿DD
2021/01/25
2.3K0
macOS Big Sur 使用全新虚拟化框架创建超轻量虚拟机!
Mac 全栈开发-NGinx服务器
然后在网页打开http://localhost:8080看到Nginx的欢迎信息说明启动成功。
用户1065635
2019/03/21
8790
springboot第61集:Jenkins-Boss万字挑战,一文让你走出微服务迷雾架构周刊
流水线+docker,流水线可以让项目发布流程更加清晰,docker可以大大减少Jenkins配置。
达达前端
2024/03/03
1620
springboot第61集:Jenkins-Boss万字挑战,一文让你走出微服务迷雾架构周刊
Linux suse x86_64 环境上部署Hadoop启动失败原因分析
# A fatal error has beendetected by the Java Runtime Environment:
星哥玩云
2022/06/29
1.3K0
Grape 依赖管理器
本文参考自Groovy文档 The Grape dependency manager,本文代码大部分来自Groovy官方文档。
乐百川
2022/05/05
8160
使用 Envoy 和 AdGuard Home 阻挡烦人的广告
通常我们使用网络时,宽带运营商会为我们分配一个 DNS 服务器。这个 DNS 通常是最快的,距离最近的服务器,但会有很多问题,比如:
米开朗基杨
2019/09/24
6.3K0
使用 Envoy 和 AdGuard Home 阻挡烦人的广告
相关推荐
xwiki管理指南-安装教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验