Jenkins自动化部署

488 阅读3分钟

前言

新公司还是只是脚本打包,抽时间弄了下Jenkins,同时整体梳理了一下自动化部署的基本流程。

基本流程

  • Jenkins 平台根据构建参数,点击构建项目
  • 从gitlab拉取对应分支代码,通过fastlane进行打包
  • 打包成功后,上传ipa到内测托管平台或者AppStoreConnect
  • 发送邮件或者其他通讯消息,通知相关人员

Jenkins安装

Jenkins官网也有很详细的平台安装文档,这里主要记录下自己mac安装过程

java环境安装

首先jenkins是需要依赖java环境的,通过下面的命令先确认下本地是否已经有java环境

// 查看java 版本
java -version
// 打印版本信息,说明已经安装可以跳过这部分
openjdk version "11.0.16.1" 2022-08-12
OpenJDK Runtime Environment Homebrew (build 11.0.16.1+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.16.1+0, mixed mode)

通过下面命令安装java对应的版本

brew install openjdk@17

jenkins 安装

这里jenkins 有两个版本,建议安装lts版本

截屏2022-12-11 16.25.36.png

// 安装稳定版本
brew install jenkins-lts
// 安装新版
brew install jenkins

后面发现即使没有先安装java环境,在执行install jenkins也会因为依赖关系,自动安装 飞书20221211-185119.png

注意中间的一些安装信息,如Apple Command Line Tools未安装会有报错,按提示安装,后面打包也要用到

Error: python@3.10: the bottle needs the Apple Command Line Tools to be installed.
  You can install them, if desired, with:
    xcode-select --install

安装完成后就可以启动服务了,常用的三条命令

// 启动Jenkins服务
brew services start jenkins-lts
// 重启Jenkins服务,先结束再启动
brew services restart jenkins-lts
// 更新Jenkins
brew upgrade jenkins-lts

jenkins 配置

这里要说一下,jenkins默认的配置的地址是127.0.0.1,端口是8080,可以在/usr/local/opt/jenkins-lts/homebrew.mxcl.jenkins-lts.plist文件中查看到如下配置

<string>--httpListenAddress=0.0.0.0</string>
<string>--httpPort=8080</string>

如果需要局域网访问,将httpListenAddress修改为0.0.0.0

接下来jenkins服务启动,在浏览器输入http://localhost:8080 即可以访问jenkins界面了。

有可能会遇到8080端口被占用,导致界面打不开,修改httpPort即可

lsof -i:8080 //查看某个端口被占用
入门操作
  1. 打开jenkins界面节目如下,命令行输入
// 查看密码,复制界面提示的目录即可
cat /Users/xxx/.jenkins/secrets/initialAdminPassword

飞书20221212-113014.png

  1. 点击继续,会出现下图,如果不熟悉插件,选择推荐插件安装即可,都是一些通用插件,接下来就是插件安装界面,可以去喝杯茶等待一会了

飞书20221212-113020.png

  1. 安装完对应插件后,会有一个设置第一个管理员操作,按提示输入即可,然后是设置一个jenkins域名,可以默认以后再设置,按提示操作后,即可进入到主界面了。
工程配置
  1. 接下来要进行一些一些系统配置

截屏2022-12-11 23.21.42.png

  • 下拉到全局属性一项,做如下配置
键:LANG 值:en_US.UTF-8
键:PATH 值:xxxxx (终端输入 echo $PATH ,把结果复制即可)
这是在后面打包测试的时候报错信息,所以LANG修改对应的值,并且按提示在.bashrc 保存对应的信息
[15:10:32]: Your shell environment is not correctly configured
[15:10:32]: Instead of UTF-8 your shell uses US-ASCII
[15:10:32]: Please add the following to your '~/.bashrc':
[15:10:32]: 
[15:10:32]:        export LANG=en_US.UTF-8
[15:10:32]:        export LANGUAGE=en_US.UTF-8
[15:10:32]:        export LC_ALL=en_US.UTF-8

截屏2022-12-11 23.23.57.png

  • 项目都是git管理,在插件管理那里可以搜索Git Parameter,安装下这个插件

飞书20221212-113032.png

  1. 创建项目

飞书20221212-113024.png

飞书20221212-113027.png

  1. 项目配置

参数设置

项目设置项,找到参数化构建过程(This project is parameterized),接下来可以按需添加一些常用的参数

  • git参数,分支选择
  • 选项参数,多Target项目,做target选择
  • 选项参数,test,adhoc,appstore 选择项

截屏2022-12-11 23.42.37.png

截屏2022-12-11 23.53.25.png

截屏2022-12-11 23.54.22.png

源码管理设置

  • 输入对应的项目git地址
  • 添加git登陆用户

截屏2022-12-11 23.56.08.png

添加打包shell执行

下拉到最后,添加一个构建步骤,执行shell,用来执行fastlane打包其中$action$targetENV,两个参数就是上面参数设置中添加的参数项,如果有其它参数需要传入,安装对应的参数类型添加即可

截屏2022-12-12 00.01.51.png

结束

公司大部分都是以windows为主节点搭建的jenkins服务,iOS打包是必须要mac电脑,所以需要以mac电脑作为子节点,后面会有一篇记录下子节点的建立。 fastlane 相关内容也会尽快输出。