Flutter Jenkins自动化打包-iOS篇



# keychain-这里可能你进去看到只有login.keychain-db,复制一份然后去掉-db即可
security unlock-keychain -p 111111 ${HOME}/library/keychains/login.keychain

# 工程名-在xcode中查看PROJECT
APP_NAME="Runner"

# target-在xcode中查看TARGETS
TARGET_NAME="Runner"

# 模式
CONFIGURATION="Release"

# 路径 这个路径要自己看/Users/你的电脑用户名/.jenkins/workspace/下的,你每建一个项目,构建后都会在这下面创建对应的文件夹存放git clone下来的项目
WORKSPACE_PATH=${WORKSPACE}/ios/${APP_NAME}.xcworkspace
# 这个是导出ipa用的文件,用xcode导出一个对应模式的ipa就能获取到,把那个文件的路径放这里
EXPORT_OPTIONS=/Users/mac/Desktop/WikiFx_APP/WikiFx_iOS/${buildType}/ExportOptions.plist
ArchivePath=/Users/mac/Desktop/WikiFx_APP/WikiFx_iOS/${buildType}
EXPORTIPA=/Users/mac/Desktop/WikiFx_APP/WikiFx_iOS/${buildType}


# 清空存放ipa的文件夹
#cd ${EXPORTIPA}
#rm -rf *

# flutter pub get
cd ${WORKSPACE}/
#flutter pub get

# build app,里面的primary是前面的target
flutter build ios --release 

curl -X POST -H "Content-Type: application/json" \
	-d '{"msg_type":"text","content":{"text":"jenkins脚本正在打包ios"}}' \
  https://open.feishu.cn/open-apis/bot/v2/hook/95d20add-3cc9-4bad-97eb-2b817d34281a

# 进入原生项目 archive和export
cd ${WORKSPACE}/ios/

#pod install
date=`date '+%Y%m%d_%H.%M.%S'`

# 导出achive,里面的primary是前面的target
xcodebuild archive -workspace ${WORKSPACE_PATH} -scheme "Runner" -configuration ${CONFIGURATION} -sdk iphoneos -archivePath ${ArchivePath}/runner_${date}.xcarchive

# 导出ipa
xcodebuild -exportArchive -archivePath ${ArchivePath}/runner_${date}.xcarchive -exportPath ${EXPORTIPA}/runner_${date} -exportOptionsPlist ${EXPORT_OPTIONS}

new=/Users/mac/Desktop/WikiFx_APP/WikiFx_iOS/${buildType}/runner_${date}/WikiFX.ipa
echo -e "\033[32m =================ipa在/Users/mac/Desktop/WikiFx_APP/WikiFx_iOS/${buildType}/runner_${date}/WikiFX.ipa ================= \033[0m"


 
echo "==========当前分支:${branchName}=========="
#飞书机器人webhook 地址
api=https://open.feishu.cn/open-apis/bot/v2/hook/95d20add-3cc9-4bad-97eb-2b817d3428ee
#要发送的信息
content="-打包类型:${buildType}\n-分支:${branchName}\n-更新内容:${uploadDescription}\n-ipa包目录在:${new}\n-下载链接:http://d.maps9.com/mlvq"  
 

#换行用\n 空格用\t




fir login -T "9392a78ca4489b3be9b60b5eac8d76bb"
fir publish $new
echo -e "\033[32m =================上传成功 ================= \033[0m"


curl -X POST \
  $api \
  -H 'Content-Type: application/json' \
  -d '{
    "msg_type": "post",
    "content": {
        "post": {
            "zh_cn": {
                "title": "WikiFx_iOS打包成功!",
                "content": [
                    [
                        {
                            "tag": "text",
                            "un_escape": true,
                            "text": "'$content'"
                        }
                    ],
                    [

                    ]
                ]
            }
        }
    }
}'

### 配置 Jenkins 实现 Flutter 项目自动打包 #### 安装 Jenkins 和 Java 为了使 Jenkins 正常运行,在 Mac 上需先安装 Jenkins 及其依赖项 Java。可以通过 Homebrew 来简化这一过程[^3]。 ```bash brew install jenkins-lts ``` 安装完成后,访问 `http://localhost:8080` 启动 Jenkins 并按照屏幕上的指示完成初始设置,包括获取并输入初始化密码、安装推荐插件以及创建管理员账户等操作[^4]。 #### 设置全局工具配置 进入 Jenkins 的系统管理界面,找到“Global Tool Configuration”,在这里添加必要的构建工具: - **JDK**: 增加 JDK 版本以便后续用于编译 Java 类库。 - **Android SDK**: 如果涉及 Android 应用,则需要指定 Android SDK 的位置。 - **Gradle**: 对于 Android 构建来说必不可少;对于 iOS 则不是必需但建议也进行配置以支持多平台开发需求。 - **Flutter SDK**: 明确指出本地已有的 Flutter SDK 路径或让 Jenkins 自动下载最新稳定版。 #### 创建新任务 (Job) 通过点击左侧菜单中的 "New Item" 开始新建一个自由风格软件项目(Freestyle project),命名此作业为 “Build_Flutter_App”。 在源码管理部分选择 Git,并提供仓库 URL 和分支名来拉取代码。接着定义构建触发器(例如定时调度或者监听远程钩子事件),这取决于具体的持续集成策略[^1]。 #### 执行 Shell Script 进行构建 针对不同操作系统下的应用类型编写相应的 shell script: ##### Android Build Command ```sh flutter clean && flutter pub get && cd android && ./gradlew assembleRelease ``` 这条命令序列会清理旧缓存数据、同步依赖关系表、切换至安卓目录下并通过 Gradle 组件执行发布模式的 APK 文件组装工作。 ##### iOS Build Command ```sh flutter clean && flutter pub get && cd ios && xcodebuild archive -scheme YourAppSchemeName -archivePath build/archive/YourAppName.xcarchive ``` 这里假设已经正确设置了 XCode 工程方案(Scheme),并且拥有有效的开发者账号与签名证书信息。 #### 添加凭证管理和安全措施 确保所有敏感资料如私钥、API Token 或者 SSH 密钥都存储在 Jenkins 凭证管理系统内而不是硬编码进脚本里。特别是当处理 iOS App Store 提交时所使用的 p12 文件和移动设备推送通知服务所需的 APNs 认证文件等重要资产更应该妥善保管。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值