Jenkins创建mac节点打包配置流程

1,282 阅读3分钟

Jenkins打包踩坑实录

1.下载安装tabby终端工具(用来管理jenkins安装的服务端)

Tabby支持在Linux、MacOS和Windows三个平台上安装使用,安装也是非常简单。只要打开他的github项目地址(github.com/Eugeny/tabb…),找到适合你的安装包即可。

  • ssh配置:点击设置-选择“配置和连接”-增加“新配置”-选择ssh连接,填写配置信息保存;

截屏2022-11-01 下午4.01.45.png

  • 接受并记住密钥;

截屏2022-11-01 下午4.02.12.png

2.安装ruby
  • 提前安装依赖包
# yum install openssl-devel gdbm gdbm-devel readline readline-devel gcc gcc-c++ 
  • 前往官网下载ruby,下载.tar.gz;
  • 上传至服务器
  • 解压安装包
[root@9a12316068ab /]# tar zxf ruby-3.1.2.tar.gz 
[root@9a12316068ab /]# cd ruby-3.1.2
  • 预编译(安装到指定目录下)
[root@9a12316068ab ruby-3.1.2]# ./configure --prefix /usr/local/ruby-3.1.2
  • 安装
[root@9a12316068ab ruby-3.1.2]# make && make install
  • 环境变量配置
[root@9a12316068ab ruby-3.1.2]# tail -2 /etc/profile RUBY_HOME=/usr/local/ruby-3.1.2 export PATH=$PATH:$RUBY_HOME/bin
[root@9a12316068ab ruby-3.1.2]# source /etc/profile
3.gem环境配置
  • 更改 gem 源
[root@9a12316068ab /]# gem sources --remove https://rubygems.org/  -a https://gems.ruby-china.com/

  • 更新 gem 库
[root@9a12316068ab /]# gem update --system
  • gem 安装 rails
# 如出现报错 -- 需按照对应提示完成对应依赖安装
[root@9a12316068ab /]#gem install rails --version 5.2.5
  • gem 安装 bundle
[root@9a12316068ab /]# gem install bundler
Fetching bundler-2.3.24.gem
Successfully installed bundler-2.3.24
Parsing documentation for bundler-2.3.24
Installing ri documentation for bundler-2.3.24
Done installing documentation for bundler after 0 seconds
1 gem installed

4.安装cocoaPods
gem install -n /usr/local/bin cocoapods
5.升级git

自带的git版本过低需要升级

yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • 查看最新版本
yum provides git

截屏2022-11-02 下午3.15.29.png

  • 安装新版本
# 如果有老版本先卸载
yum remove git
# 安装最新git
yum install git236
  • 查看更新后的版本
git --version
git version 2.36.1
6.安装Jenkins
  • 下载指定版本的war包(见6.4)
  • jenkins.war放在 /usr/local/jenkins 目录下
  • 在 /var/log/jenkins 目录下创建nohup.out文件
#jenkins 文件夹需要自己创建
touch nohup.out
  • 执行以下命令
#linux
nohup java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/local/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20 2>/var/log/jenkins/nohup.out 1>/var/log/jenkins/nohup.out &
#mac
nohup java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/local/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --debug=5  2>/var/log/jenkins/nohup.out 1>/var/log/jenkins/nohup.out &
  • 修改端口号
java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=3602

b9047484c1f64dd3bcb314beec1f1b08

  • 记录密钥
7.Jenkins升级
  • 下载插件,提示需要高版本才能安装时
  • 1、备份/usr/local/apache-tomcat-8.5.38/webapps 下的jenkins文件夹 和 jenkins.war 包
$ pod repo update --allow-root
#压缩 压缩文件 然后备份
tar -zcvf jenkins.tar.gz jenkins
#解压缩
tar -zxvf jenkins.tar.gz
  • 2、停止服务
#/usr/local/apache-tomcat-8.5.38/bin 目录下执行该命令
./shutdown.sh
#执行 shutdown.sh 失败时执行该命令后 再次运行
chmod +x *.sh
  • 3、删除jenkins.war
  • 4、下载新版本: /usr/local/apache-tomcat-8.5.38/webapps 下执行 升级
#到tomcat/webapps 下执行 升级
wget https://get.jenkins.io/war/2.332/jenkins.war --no-check-certificate
  • 下载完成后重启服务
./startup.sh
8.jenkins安装一些常用的插件

1、gitLab Plugin(必要)
2、gitLab Hook Plugin
3、Xcode integration(必要)
4、keychains and provisioning profiles Management(必要)
5、CocoaPods Jenkins Integration(必要)
6、git Git Parameter(分支管理)(必要)
7、Upload to pgyer(上传蒲公英) 7、build Timeout
8、description setter plugin
9、Email Extension Plugin
10、SSH Agent Plugin
11、workSpace Cleanup Plugin
12、fir-Plugin\

9.JenKins 远程从节点Mac构建 mac电脑设置
  • 系统偏好设置-共享-远程登录:勾选所有人,或者仅这些用户,并添加你的用户

截屏2022-11-09 下午5.31.36.png

  • 系统偏好设置-网络-高级-TCP/IP :选择手动 固定ip地址

截屏2022-11-09 下午5.31.55.png

  • 如果需要外网访问 下载花生壳后 点击“增加映射”
    勾选TCP 选择映射模版 SSH服务 填写上面固定的IP地址 端口号22 点击保存即可 截屏2022-11-09 下午5.32.16.png
  • 点击诊断可以看到如下信息 注意:填写Jenkins 主机地址时填写的是转发服务器IP 高级配置的端口号:映射后面的对应端口号

截屏2022-11-09 下午5.45.21.png

10.JenKins 远程从节点Mac构建 Jenkins配置
  • 系统管理-节点管理-新建节点:输入节点名称,选择固定节点

截屏2022-11-07 下午1.47.32.png

  • 如图所示填写相关信息

WechatIMG165.jpeg

  • 主机:填写远程Mac电脑的IP地址(不需要映射外网) 截屏2022-11-07 上午11.23.03.png
  • 主机:填写转发服务器IP地址 点击高级设置端口号(映射外网)
  • jenkins在远程服务器,将mac电脑作为远程节点来实现自动化构建,需要把本机IP穿透到外网,使外网可以访问Mac电脑;(可以使用花生壳mac端下载截屏2022-11-09 17.17.17.png 截屏2022-11-09 17.17.24.png 截屏2022-11-07 上午11.23.15.png 点击保存 “Agent successfully connected and online”则表示节点构建成功

截屏2022-11-09 17.26.04.png

11.JenKins login.keychain上传
  • 新版本的Jenkins都不支持上传login.keychain文件,建议先下载2.263版本(2.263)版本的war包,就可以上传文件了;
  • 选择系统管理-最下方的keychains and provisioning profiles Management插件

1.png

  • 选择文件目录~/Users/用户名/Library/Keychains/login.keychain,选择文件点击上传。(显示隐藏文件(command+shift+"+"+".")即可显示)
  • 复制login.keychain-db文件修改名称为login.keychain 上传login.keychain 截屏2022-11-19 下午9.59.06.png
  • 上传成功后下方会显示如下信息:Password填写打包机开机密码

2.png

3.png

  • Code Signing Identity需要我们自己填写,即证书的名称:
  • 1、需要将登录中的证书拷贝到系统目录下
  • 2、Code Signing Identity填写证书的常用名称

4.png

  • 上传描述文件,目录:~/User/用户名/Library/MobileDevice/Provisioning Profiles下上传对应证书的描述文件 UUID:就是此目录下的名称

截屏2022-11-19 下午9.46.33.png

5.png

  • 全部上传填写完毕后点击保存。然后再将jenkins升级到新的版本使用;

二、Jenkins打包iOS项目全流程配置

1、新建一个任务,输入项目名称选择Freestyle project

1.png

2、设置保存构建天数和构建数量。

1-1.png

3、安装了Git Parameter插件,可以勾选This project is parameterized,配置分支参数。

2.png

3.png

4、勾选限制项目运行节点 输入之前创建好的mac节点标签。

4.png

5、源码管理,选择git(SSH)

5.png

  • 填写项目路径,Credentials:点击添加,类型选择SSH Username with private key,填写对应的信息其中Private Key可使用如下命令查看,注意复制全部完整的密钥,进行添加
$ cd ~/.ssh
$ cat id_rsa

7-1.png 7-2.png

  • 保存后Credentials选择刚刚添加的。
6、构建环境勾选Keychains and Code signing Identities
  • Code Signing Identity选择需要的证书名称,此处需要注意,如果在已经上传login.keychain的前提下,证书选择是空的,可以先空着保存,再点击配置在进行选择就会出现(是的 就是这么奇怪👀)。 7.png
7、构建环境勾选Mobile Provisioning Profiles
  • 选择与证书对应的配置文件 8.png
7、增加构建步骤选择执行shell(项目使用了Pods需要增加此步骤,不使用Pods可忽略)

10.png

#!/bin/bash
#source /etc/profile
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
pod install
pod update --verbose --no-repo-update
  • 如果pod update 报错:CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only perfomed in repo update 使用如下命令后重试即可。
rm -fr ~/.cocoapods/repos/trunk
8、增加构建步骤选择Xcode
  • General build settings:Team ID可以去开发者账号的会员信息中查看,或者生产证书名称“()”中的内容就是Team ID. 1.png
  • 点击Settings 截屏2022-11-19 下午11.15.21.png
  • Configuration默认为Realease,根据需要填写。Xcode Schema File:要打包的Schema名称 2.png
  • 勾选 Pack application, build and sign .ipa?Export method,选择导出方式,以及设置ipa包的命名规则。 3.png
  • 设置Output directory路径(这里我设置为工作空间下IPA文件夹,需要注意的事,网上搜到的资料都比较老,老版本${WORKSPACE}/projectName后需要自己拼写工程名称目录,新版本jenkins不需要${WORKSPACE}直接就是当前工程的工作空间下了) 4.png
  • 其他的都使用默认的设置即可。
  • 设置:Code signing & OS X keychain options
  • 选择手动管理PP, 输入项目的bundle id,和对应的PP文件UUID。 5.png
  • 勾选 Unlock Keychain
  • 填写 Keychain path,正常都是这个路径无需更改
  • Password 输入开机密码 截屏2022-11-19 下午11.32.43.png
  • 设置 Advanced Xcode build options
  • Xcode Workspace File使用了Pods的,填写.xcworkspace前面的名称 8.png
  • Build output directory 9.png
9、点击保存,进行构建
  • 遇到报错不要慌,看具体的报错信息一步一步排查解决
  • 系统配置-勾选Environment variables增加建键:PATH 值:填写“echo $PATH” 查看出来的那一串内容;
#查看
echo $PATH
kill PID

截屏2022-11-21 下午5.01.59.png

  • 如配置了PATH依然遇到遇到如下报错rm:commant not found,一个一个把打包机缺少的命令安装上 如果打包机器已经有此命令,但无法运行。linux下需要给相关命令做软连接到usr/bin 或者usr/local/bin 即可执行命令
#软连接 可直接使用命令 而不需要绝对路径
ln -s /bin/rm /usr/local/bin/
ln -s /bin/mkdir /usr/local/bin/
# 查询所有进程
ps -aux
#  结束进程
kill PID
  • 如需要上传蒲公英,需要下载Upload to pgyer插件
  • ssh免密操作 mac生成的id_rsa.pub内容拷贝到jenkins的authorized_keys(如没有需自己创建)中。
  • 增加构建步骤shell
cd ${WORKSPACE}/IPA
#将打包好的文件拷贝到jenkins目录下
scp -P 3601   FatePlus-${VERSION}.ipa  root@10.240.180.136:/opt/workspace/FatePlusIOS
  • 增加构建后步骤选择Upload to pgyer with apiV2

截屏2022-11-22 下午2.05.22.png

  • 即可成功上传蒲公英