美文网首页
iOS使用Jenkins完成自动化打包

iOS使用Jenkins完成自动化打包

作者: 怪兽monster | 来源:发表于2020-09-23 17:54 被阅读0次

    iOS使用Jenkins实现自动化打包并上传蒲公英

    一、安装本地Jenkins

    1、通过Home brew安装本地Jenkins

    brew install Jenkins
    

    没安装Home Brew的可使用命令自行安装

    /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
    

    2、启动Jenkins

    终端输入命令启动Jenkins

    jenkins
    

    待Jenkins启动后,浏览器打开:http://localhost:8080/

    3、解锁Jenkins

    按照提示到文件所在目录并拷贝初始密码,解锁Jenkins。

    4、安装插件

    安装插件.png

    可以选择推荐的插件,也可自行选择插件安装。

    5、设置登录账号密码

    设置登录账号密码.png

    二、配置Jenkins

    1、安装插件

    到系统管理-->插件管理-->可选插件中,搜索安装以下插件:
    Keychains and Provisioning Profiles Management(用来管理本地keychain和iOS证书)
    Xcode integration (用于xcode构建)

    插件安装.png
    搜索安装插件.png

    2、配置证书

    插件安装完成后,在系统管理中找到刚安装的Keychains and Provisioning Profiles Management插件:

    Keychains and Provisioning Profiles Management.png

    3、配置login.keychain和描述文件

    1、login.keychain文件路径:

    ~/Library/Keychains

    如果该路径下只有login.keychain-db,可以复制出来删除-db。

    2、Provisioning Profiles路径一般为:

    /User/{用户名}/Library/MobileDevice/Provisioning Profiles

    配置证书.png

    配置完成后点击Save保存。

    三、新建任务

    1、创建一个自由风格的任务:

    新建任务.png

    2、项目配置:

    1、丢弃旧的构建(按需填写)

    丢弃旧的构建.png
    2、源码管理:
    源码管理.png
    3、构建环境:
    构建环境.png
    4、增加构建步骤:
    可选Xcode编译,也可以选择Shell脚本使用Xcodebuild命令编译,这里只介绍shell脚本的方式:增加构建步骤-->Execute shell
    echo "=================1.创建环境及文件路径================="
    
    # $HOME表示 Jenkins 的主目录
    
    # 项目输出路径
    
    OUTPUT_PATH="/Users/guaishou/autopackaging"
    
    echo $OUTPUT_PATH
    
    if [ ! -d $OUTPUT_PATH ]; then
    
    mkdir $OUTPUT_PATH
    
    fi
    
    # 创建当前任务下的 项目文件 环境
    
    # ${JOB_NAME} 当前任务名称
    
    JOB_NAME_PATH="$OUTPUT_PATH/${JOB_NAME}"
    
    echo $JOB_NAME_PATH
    
    if [ ! -d $JOB_NAME_PATH ]; then
    
    mkdir $JOB_NAME_PATH
    
    fi
    
    # 项目工程名
    
    APP_NAME="sudi"
    
    #项目scheme名称,一般跟都是跟APP_NAME是一致的
    
    SCHEME_NAME="jixain" 
    
    # 项目中 Info.plist 的绝对路径
    
    PLIST_PATH="$HOME/jenkins/workspace/${JOB_NAME}/${APP_NAME}/${APP_NAME}/Info.plist"
    
    # 获取项目的版本号、App名称
    
    BUNDLE_SHORT_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PLIST_PATH}")
    DISPLAY_NAME=$(/usr/libexec/PlistBuddy -c "Print CFBundleDisplayName" "${PLIST_PATH}")
    
    # ipa存放的路径
    
    IPA_PATH="${JOB_NAME_PATH}/build"
    
    # 创建 ipa 路径文件夹
    
    if [ ! -d $IPA_PATH ];then
    
    echo '文件夹不存在,创建文件夹'
    
    mkdir $IPA_PATH
    
    else
    
    echo '文件夹已存在,删除文件夹内所有文件'
    
    rm -rf $IPA_PATH/*
    fi
    
    # archive 文件路径
    
    ARCHIVE_PATH="${IPA_PATH}/${APP_NAME}_${BUILD_ID}.xcarchive"
    
    echo "=================2.进入工程目录================="
    
    cd $HOME/jenkins/workspace/${JOB_NAME}/${APP_NAME}
    
    echo "=================3.清理工程================="
    
    xcodebuild clean -target "${APP_NAME}" -configuration 'Release'
    
    echo "=================4.解锁钥匙串================="
    
    # 这里读取了 Jenkins 下的 Library 中的 Keychains
    
    #如果构建环境配置看keychain,此步骤可省略
    
     security unlock-keychain -p "电脑登录密码" "${HOME}/Library/Keychains/login.keychain-db"
    
    echo "=================5.打包生成 xcarchive 文件================="
    
    # 这里采用了自动签名的方式,可自行配置 CODE_SIGN_IDENTITY 和 PROVISIONING_PROFILE
    
    # 如果是使用了cocopods的workspace,可将 -project 替换为 -workspace , .xcodeproj 替换为 .xcworkspace
    
    xcodebuild archive -workspace "${APP_NAME}.xcworkspace" -scheme "${SCHEME_NAME}" -configuration "Debug" -archivePath "${ARCHIVE_PATH}"
    
    echo "=================6.导出 ipa ================="
    
    # ExportOptions.plist主要是描述了导出的 ipa 使用的相关证书和配置文件
    
    # 不知道怎么填写的自行百度
    
    xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath "${IPA_PATH}" -exportOptionsPlist "${JOB_NAME_PATH}/ExportOptions.plist"
    
    echo "=================7.上传到蒲公英发布平台 ================="
    PASSWORD=555555
    GIT_MESSAGE=`git log -1 | sed -n '5,$p'`
    curl -F "file=@${IPA_PATH}/${SCHEME_NAME}.ipa" \
    -F "uKey=你的User Key" \
    -F "_api_key=你的Api Key" \
    -F "buildInstallType=2" \
    -F "buildUpdateDescription=commitId:${GIT_COMMIT}-message:${GIT_MESSAGE}" \
    -F "buildPassword=${PASSWORD}" \
    https://www.pgyer.com/apiv2/app/upload
    
    echo "=================8.通知企业微信 ================="
    CURL_PSOT_DATA="
       {
            \"msgtype\": \"text\",
            \"text\": {
                \"content\" : \"${DISPLAY_NAME}_iOS_${BUNDLE_SHORT_VERSION}构建成功!\n环境:Debug\n下载:蒲公英对应下载地址\n密码:${PASSWORD}\n更新:${GIT_MESSAGE}\"
            }
       }"
    
    curl '企业微信机器人地址' \
       -H 'Content-Type: application/json' \
       -d "$CURL_PSOT_DATA"
    

    关于蒲公英部分和企业微信部分,可以去蒲公英官网和企业微信中查看对应的API。

    三、立即构建

    立即构建.png

    点击立即构建,就可以完成iOS项目的自动构建了。

    四、多分支多环境打包配置

    1、参数化构建:


    参数化构建.png

    按照上图方式配置完后,需要在shell脚本中对以下进行修改:

    xcodebuild clean -target "${APP_NAME}" -configuration '${bulidEnvironment}'
    
    xcodebuild archive -workspace "${APP_NAME}.xcworkspace" -scheme "${SCHEME_NAME}" -configuration "${bulidEnvironment}" -arch arm64 -archivePath "${ARCHIVE_PATH}"
    

    源码管理里的分支应该填对用的git参数名称:


    源码管理.png

    配置完成后,立即构建按钮就会变成这样:


    构建.png

    点进去选择对用的分支和参数进行构建:


    多参数构建.png

    相关文章

      网友评论

          本文标题:iOS使用Jenkins完成自动化打包

          本文链接:https://www.haomeiwen.com/subject/kwmvyktx.html