安装
- 打包机基本都是用的 Mac,所以这里是 Mac 的安装过程。
- 我用的 Homebrew 安装的 LTS 版本,如下:
1
| brew install jenkins-lts
|
- 安装完了之后进入配置过程,选择安装推荐的插件就行
- Jenkins 肯定是需要不同的人通过不同的机器访问的,所以有两个步骤,增加新的管理员,配置访问 IP
- 增加新的管理员很简单,在设置中,管理用户就行了。
启动和停止
- 我通过 homebrew 安装 Jenkins,启动和停止服务的命令行如下:
1 2 3 4 5 6 7 8 9 10 11
| # 启动 brew services start jenkins
# 或者如果是 LTS 版本 brew services start jenkins-lts
# 停止 brew services stop jenkins
# 或者如果是 LTS 版本 brew services stop jenkins-lts
|
- 这里有一个小 Tips,就是你可以把这个命令行写成一个简单的函数放到 .zshrc 文件中,比如:
1 2 3 4 5 6 7 8
| start_jenkins(){ brew services start jenkins-lts }
stop_jenkins(){ brew services stop jenkins-lts }
|
配置访问 IP
- 第一步是修改访问的 IP 地址,在系统配置的 Jenkins URL 中修改地址为你当前机器的 IP地址。
- 第二步关闭防火墙。
- 第三步修改监听的地址,Jenkins 默认是监听本地的,想要监听外部访问需要修改。
- 根据你的机器在下面几个路径中找到这个文件:homebrew.mxcl.jenkins.plist
可能路径 |
适用情况 |
/usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist |
较旧Homebrew安装 (Intel芯片Mac) |
/opt/homebrew/opt/jenkins/homebrew.mxcl.jenkins.plist |
较新Homebrew安装 (Apple Silicon芯片Mac) |
~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist |
用户级服务启动目录 |
- 在文件中找到包含 –httpListenAddress=127.0.0.1 的参数行,将其中的 127.0.0.1 修改为 0.0.0.0
- 另外如果你想修改监听的端口的话也可以在这个文件中修改,修改 –httpPort=8080 这里的参数就行,但是记得配置 Jenkins URL 的地方也要修改。
执行 Shell 脚本
通过运行 Shell 我们可以做许多事情,比如在打包机上打表,打包等操作。
Shell 运行
- Jenkins 中执行 Shell 脚本和 Mac 上终端本地执行脚本基本是一样的逻辑
- 比如现在比较流行的 Luban 打表工具,我在终端中执行的逻辑如下:
1 2
| cd workpath bash ./gen_tables.sh
|
定时执行
- 有些操作是想要每天都做的,如果 Jenkins 能帮我们做了就好了,比如每天定时拉取 SVN,定时打表这种,就可以直接在 Jenkins 中设置就好。
- 选择定时执行,然后输入特定的代码:
- 这个意思是 每天中午12点左右的某个时间执行一次。类似的定时执行代码如下
示例 Cron 表达式 |
含义与说明 |
H/15 * * * * |
每隔15分钟执行一次,分钟数使用哈希分散。 |
H H/2 * * * |
每2小时执行一次,具体分钟数使用哈希。 |
H 12 * * * |
每天中午12点左右的某个时间执行一次。 |
H 8,12,21 * * * |
每天8点、12点、21点各执行一次,时间点使用哈希分散。 |
0 18 * * * |
每天下午6点整执行一次。 |
H/3 22-23 * * 1-5 |
周一到周五的晚上22点到23点之间,每3分钟执行一次。 |
0 10 * * 1 |
每周一的上午10点整执行一次。 |
PATH 配置
- 如果你之前有过使用终端的经验,你就应该知道很多环境是需要安装和配置的。
- 比如使用 dotnet 执行一些 C# 库文件的时候就需要使用 dotnet SDK,通过命令行安装后一般都是可以直接使用的,但其实是因为命令行安装的时候帮你自动做了增加 PATH 的操作,比如你用下面的命令行输出你的 PATH 路径
- 你就可以看到你当前的环境了,执行 dotnet 相关的命令行的时候都是从上面的路径中一个一个找到匹配的环境,找到了才能执行。
- 虽然 Jenkins 安装在打包机上,但是当你去执行一个可以正常在打包机上执行的 Shell 脚本的时候,如果你没有配置环境,还是会提示你找不到命令的。
- 所以就需要你将环境配置在 Jenkins 中,通过节点即可配置。
- PATH 路径我建议直接将打包机的路径全复制过去,省的一个个用到的时候再配置。

行尾序列错误
- Jenkins 有一个很坑的问题,可能你搜也搜不到,甚至问 AI,AI 都不一定能告诉你,你的 PATH 命名是配置好的,但是就是提示在 PATH 中找不到对应的路径。
- 我之前在 Mac 上就遇到了这个问题,我本地路径是没问题的,但是执行 dotnet 的时候就是找不到,最后问 AI,AI 跟我说可能是 行尾序列错误了,我一查果然有问题。
- Mac 和 Linux 都是用的 LF,windows 用的是 CRLF,所以如果你的 Shell 脚本的行尾序列是 CRLF,在 Mac 大概率是执行不了了,得改掉才行。
- 然后我在 Jenkins 执行 Shell 脚本的时候也遇到了这个问题,我一开始以为我 PATH 环境出错了,但是确认了很多遍是没问题的。
- 忽然想起了这个问题似曾相识,然后我在 Jenkins 配置 Shell 脚本的时候添加了下面的代码:
1 2
| # 在调用你的脚本之前,先转换行尾格式 sed -i '' 's/\r$//' your_script.sh
|
- 果然可以正常执行了,这个问题就有点神奇了,我 Mac 本地的行尾序列确确实实是 LF,但是 Jenkins 执行的时候就不是,所以找不到,只能在 Jenkins 执行之前改掉。