Jenkins还是我最喜欢的CICD工具。
安装 Jenkins
官网目前推荐的方式是docker运行Jenkins,只需要一条命令就可以搞定。docker是很好用,不过也会有一些不方便的地方:
- 不能完全访问本地磁盘,需要挂载后才可以,而挂载某个目录还需要提前在docker客户端注册,有点绕。
- 不能访问本地代理,大家都知道我们的网络条件不是很好,可能会自建代理,docker中使用代理也不方便。
文件读写的问题有网友说可以通过rsync之类的软件解决,听上去可行,其实也不方便。所以到最后,我们可能还是选择在本地安装Jenkins。
本地安装最简单的办法是使用Howbrew包管理器。
1
2
3
4
5
6
7
8
9
10
11
12
$ brew install jenkins
==> Downloading http://mirrors.jenkins.io/war/2.205/jenkins.war
==> Downloading from http://ftp-chi.osuosl.org/pub/jenkins/war/2.205/jenkins.war
######################################################################## 100.0%
==> jar xvf jenkins.war
==> Caveats
Note: When using launchctl the port will be 8080.
To have launchd start jenkins now and restart at login:
brew services start jenkins
Or, if you don't want/need a background service you can just run:
jenkins
最新消息,官方已经发文不再支持macOS下的原生包安装,建议该用docker或者homebrew。
- https://jenkins.io/blog/2019/11/25/macos-native-installer-deprecation/
(原文继续)你也可以在官网选择适合MacOSX的pkg下载后双击开始安装,输入本机密码后就可以完成安装。这也开始里你的踩坑之旅。Jenkins安装完成后会默认启动,但是有可能你发现什么都没发生。坑开始来了。
- 你本机需要有java的虚拟机环境,而且必须是8-11版本的,12以上的不支持(截止2019/12)
- 你本机的8080端口不能有别的服务
你可以通过运行这个命令来进行启动测试:
1
sh /Library/Application\ Support/Jenkins/jenkins-runner.sh
你可以cat一下这个文件,执行的时候也是有回显的,比较容易知道问题出在哪。你还可以通过下面的命令来看本机有哪些目录和文件是Jenkins创建的:
1
find / -iname "*jenkins*" 2>/dev/null
配置 Jenkins
在这个目录下面有一个简单的文档介绍了怎么配置Jenkins:
- /Library/Documentation/Jenkins/command-line-preferences.html
当然,这些配置都是比较底层的,列出当前存在的配置项目:
1
2
3
4
5
6
7
8
9
$ defaults read /Library/Preferences/org.jenkins-ci
{
heapSize = 512m;
httpPort = 8080;
minHeapSize = 256m;
minPermGen = 256m;
permGen = 512m;
tmpdir = "/Users/Shared/Jenkins/tmp";
}
修改默认端口的命令:
1
$ sudo defaults write /Library/Preferences/org.jenkins-ci httpPort 8090
可以配置的选项如下:
- prefix
- httpPort
- httpListenAddress
- httpsPort
- httpsListenAddress
- war (Defaults to
/Applications/Jenkins/jenkins.war
) - JENKINS_HOME (Defaults to
/Users/Shared/Jenkins
) - tmpdir (Defautls to
/Users/Shared/Jenkins/tmp
) - minHeapSize (Defaults to 256m on 64bit architectures and 64m on 32bit)
- heapSize (Defaults to 512m on 64bit architectures and 128m on 32bit)
- minPermGen (Defaults to 256m on 64bit architectures and 64m on 32bit)
- permGen (Defaults to 512m on 64bit architectures and 128m on 32bit)
你可以删掉某个配置从而使用默认值:
1
$ sudo defaults remove /Library/Preferences/org.jenkins-ci JENKINS_HOME
Jenkins 安装后默认会建立一个标准用户名为 jenkins,Jenkins 系统本身的配置会放在JENKINS_HOME
目录里,这个目录上面已经提到,默认在 /Users/Shared/Jenkins
,Jenkins 启动后的设置和安装的插件都会被放在这里,包括 job 的 workspace 等等。
Jenkins 默认的日志目录在 /var/log/jenkins
,系统运行的错误和异常可以在这里找找。
启动和停止 Jenkins
如果为了调试,可以用这个命令:
1
sh /Library/Application\ Support/Jenkins/jenkins-runner.sh
如果是正常使用,启动和停止的命令如下:
1
2
$ sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
为了方便日后的管理,建议将这两条命令配置成 alias
放到你的 bash 启动脚本里,比如这样。
1
2
3
4
# your ~/.bash_profile
alias start-jenkins="sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist";
alias stop-jenkins="sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist";
更新 Jenkins
不出意外,按照 Jenkins 网页端的引导就可以完成 Jenkins 的更新。如果网络条件很差,你也可以到官网下载war包,然后替换 /Applications/Jenkins/jenkins.war
即可,期间需要手动停止和启动服务。
卸载 Jenkins
通过Homebrew安装的软件卸载比较简单,这里说的主要是通过界面安装的Jenkins的卸载。Google搜出来的排在比较靠前的卸载方案是:
- 手动删除 war 包
- 手动删除
JENKINS_HOME
目录 - 手动删除 jenkins 用户
但其实不用那么麻烦,只需要一条命令即可。
1
sh /Library/Application\ Support/Jenkins/Uninstall.command
期间需要输入本机管理员密码,大致输出如下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Jenkins uninstallation script
The following commands are executed using sudo, so you need to be logged
in as an administrator. Please provide your password when prompted.
+ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
Password:
+ sudo rm /Library/LaunchDaemons/org.jenkins-ci.plist
+ sudo rm -rf /Applications/Jenkins '/Library/Application Support/Jenkins' /Library/Documentation/Jenkins
+ sudo rm -rf /Users/Shared/Jenkins
+ sudo rm -rf /var/log/jenkins
+ sudo rm -f /etc/newsyslog.d/jenkins.conf
+ sudo dscl . -delete /Users/jenkins
+ sudo dscl . -delete /Groups/jenkins
+ pkgutil --pkgs
+ grep 'org\.jenkins-ci\.'
+ xargs -n 1 sudo pkgutil --forget
Forgot package 'org.jenkins-ci.support.pkg' on '/'.
Forgot package 'org.jenkins-ci.documentation.pkg' on '/'.
Forgot package 'org.jenkins-ci.jenkins21903.postflight.pkg' on '/'.
Forgot package 'org.jenkins-ci.launchd-jenkins.pkg' on '/'.
Forgot package 'org.jenkins-ci.jenkins.osx.pkg' on '/'.
+ set +x
小结
在Mac安装任何软件首选应该还是HomeBrew,不仅可以帮你搞定依赖,后续的升级和清理也很轻松。
在 Mac 上部署 Jenkins 有点像鸡肋,食之无味,弃之不舍。如果一定要在 Mac 上需要完成一些自动化的任务,同时希望配置简单友好,不知道你有没有更好的办法?