这里写目录标题
前言
关于Flutter、Android多渠道配置打包,源码
Jenkins安装
两种安装方式:
- 使用命令行安装稳定版
brew install jenkins-lts
- 下载pkg安装包
官方下载安装包地址,官方不推荐使用这种方式
使用brew安装会自动安装openjdk,也可以使用自己环境的jdk,我不想使用openjdk的环境,所以我修改了配置文件,加载本地的jdk环境。如果想修改,可以跳过这一部分内容。
- 首先
cd /usr/local/opt/jenkins
先复制一个homebrew.mxcl.jenkins.plist文件,再打开homebrew.mxcl.jenkins.plist文件
修改这两部分的内容,第一个修改为自己的jdk环境,第二个作用是允许局域网ip访问,如果是默认的127.0.0.1,可能会只允许本地访问。
<string>/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/java</string>
<string>--httpListenAddress=0.0.0.0</string>
启动
启动、停止、重启命令
brew services start jenkins
brew services stop jenkins
brew services restart jenkins
使用brew services start jenkins启动jenkins,第一次在控制台启动会把初始密码显示出来,直接复制就行。如果没有出现初始化密码,可以使用命令查看
cat /Users/用户/.jenkins/secrets/initialAdminPassword
根据推荐安装插件
安装插件
Git Parameter: git分支管理,参数配置。
description setter plugin: 主要用在构建完成,设置参数使用。
Upload to pgyer: 上传到蒲公英的插件吗,蒲公英插件文档
项目配置
jenkins默认的工作空间:/Users/用户/.jenkins/workspace
General配置
先配置一个废弃的机制
配置分支变量,下面会用到
定义通道变量名
定义dev还是pro变量名
源码管理
构建
这一部分,添加一个execute shell,执行shell脚本
#!/bin/bash
source ~/.bash_profile
flutter pub get
cd android
echo "BUILD_CHANNEL=${channel}"
export channel_name=${channel}
# 获取首字母大写的Common
firstLetter=${channel_name:0:1}
otherLetter=${channel_name:1}
firstLetter=$(echo $firstLetter | tr '[a-z]' '[A-Z]')
channel_result=$firstLetter$otherLetter
echo "channel_result=${channel_result}"
./gradlew "assemble${channel_result}${env}Release"
构建后操作
upload to pgyer with apiV2模块:作用是上传应用包到蒲公英,参考官方文档。
${WORKSPACE}/build/app/outputs/apk/${channel}${env}/release
set build description模块: 作用是将蒲公英回调的结果,使用二维码显示出来。
<a href="${appBuildURL}"><img src="${appQRCodeURL}" width="120" height="120"/></a>
注意先后顺序,先upload to pgyer with apiV2模块,再使用set build description模块,可以拖动调整顺序。因为要等上传完蒲公英,才能得到二维码的回调。
执行
解决问题
找不到./gradlew命令
先去到jenkins对应的工程目录
cd /Users/用户/.jenkins/workspace/flutter_jenkins/android
解决方法1
可以把其他Android项目的gradlew和gradlew.bat可执行文件放在/Users/用户/.jenkins/workspace/flutter_jenkins/android目录下。
解决方法2
用android studio打开/Users/用户/.jenkins/workspace/flutter_jenkins/android这个工程,双击这个命令,自动生成gradlew文件
只显示代码,没有正常显示二维码
因为Jenkins出于安全的考虑,所有描述信息的Markup Formatter默认都是采用Plain text模式,在这种模式下是不会对build描述信息中的HTML编码进行解析的。
修改配置文件,Manage Jenkins -> Configure Global Security,将Markup Formatter的设置更改为Safe HTML即可。
再刷新一下项目就可以看到二维码
局域网ip无法访问jenkins
修改配置
使用brew安装jenkins会避免很多其他安装方式产生的用户权限问题,但是会将httpListenAddress默认设置为127.0.0.1,这样我们虽然可以在本地用localhost:8080访问,但是本机和局域网均无法用ip访问。解决办法为修改两个路径下的plist配置。
~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
/usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist
将上面两个plist中的httpListenAddress后的ip地址,修改为本机IP或者0.0.0.0即可。
可能与nginx的端口占用有关
vim /usr/local/etc/nginx/nginx.conf
打开这个文件配置,将下面注释
# listen 8080;
# server_name localhost;
使用命令brew services restart nginx,重启nginx即可,或者改变端口。更省事的话直接关闭nginx。