美文网首页工具
iOS Jenkins 自动打包上传至蒲公英 持续集成

iOS Jenkins 自动打包上传至蒲公英 持续集成

作者: H了个L | 来源:发表于2018-08-28 19:06 被阅读183次

    参考文章

    1. 安装JAVA环境

    Jenkins 是一个用Java编写的持续集成工具,依赖于Java,所以在安装Jenkins前,需要先安装Java环境。

    首先,检查电脑是否已经安装有环境。

    在终端输入命令:java -version。

    如果已经安装,则会打印java版本。

    image

    否则,会说没有安装

    如果没有安装Java环境的话,需要去官网下载JAVA JDK(注意是JDK,不是JRE)。在下载前注意勾选上方的 Accept License Agreement。否则,无法下载。

    image

    2. 安装Jenkins

    1. 使用Homebrew的命令行进行安装
    1. 在终端输入命令:brew install jenkins

    2. 如果没有安装Homebrew,则需要先安装。

    3. 【Homebrew 安装方法】:前往Homebrew官网,直接拷贝官网页面上的命令,在终端运行即可。

    2. 启动jenkins,等待其安装完毕。

    在终端输入命令:jenkins

    3. 浏览器输入http://localhost:8080并进行访问。
    4. 安装插件

    Xcode integration
    GIT plugin
    GitLab Plugin
    Gitlab Hook Plugin
    Keychains and Provisioning Profiles Management

    1. 首页的左侧,点击系统管理
    2. 在系统管理界面找到插件管理
    3. 在管理插件界面,切换到可选插件选项卡,在右上角的过滤搜索里面输入我们要安装的插件名称,回车。找到我们需要的插件,打勾,点击直接安装。

    3. 项目新建和设置

    1. 点击首页的创建一个新任务
    2. 选择构建一个自由风格的软件项目。PS:这里的任务名称还是写我们的APP项目名比较好。后面的配置会用到这个任务名称。
    image

    4. 配置项目

    1. General 参数。

    切换到General选项。勾选“丢弃旧的构建”。

    设置包(即构建)的保留天数,以及最大保留个数。这个主要按照需要做设置

    “丢弃旧的构建”不勾选也可以。

    image
    2. 源码管理

    切换到源码管理选项。

    输入我们要打包的项目的Git地址。最好SSH的。

    填写我们要打包的分支(branch)。

    点击Add按钮,Add按钮会弹出一个按钮Jenkins,点击它,进行添加SSH key

    image
    3. 构建触发器

    切换到“构建触发器”选项。

    这里只设置最常用的Poll SCM。切换到“构建触发器”,勾选“Poll SCM”。

       H/20 * * * *表示:每20分支构建一次。
    
    image
    4. 构建环境
    image
    5. Excute shell

    切换到“构建”选项

    勾选“增加构建步骤”里面的Excute shell

    添加命令到Comman上。

    image

    打包

    #!/bin/bash -l  
    export LANG=en_US.UTF-8  
    export LANGUAGE=en_US.UTF-8  
    export LC_ALL=en_US.UTF-8  
      
    pod install --verbose --no-repo-update 
    
    # 打包环境
    #config="Release"
    config="Debug"
      
    #构建  
    #!/bin/bash -l  
    export LANG=en_US.UTF-8  
    export LANGUAGE=en_US.UTF-8  
    export LC_ALL=en_US.UTF-8  
      
    pod install --verbose --no-repo-update 
    
    # 打包环境 (核心)
    #config="Release"
    config="Debug"
      
    #构建  
    xcodebuild -archivePath "/Users/(用户名)/.jenkins/workspace/iOS-lighthouse-ci_beta/build/Debug-iphoneos/(项目名称).xcarchive" -workspace (项目名称).xcworkspace -sdk iphoneos -scheme "(项目名称)" -configuration ${config} archive
    
    xcodebuild -exportArchive -archivePath "/Users/(用户名)/.jenkins/workspace/iOS-lighthouse-ci_beta/build/Debug-iphoneos/(项目名称).xcarchive" -configuration ${config} -exportPath "/Users/(用户名)/.jenkins/workspace/iOS-lighthouse-ci_beta/build/(项目名称)_debug" -exportOptionsPlist '/Users/(用户名)/.jenkins/workspace/iOS-lighthouse-ci_beta/build/ExportOptions.plist' -allowProvisioningUpdates
    
    

    上传至蒲公英平台

    # 通过api上传到蒲公英当中
    echo "===上传至蒲公英平台==="
    
    # 蒲公英userkey
    pgyerUserKey="userkey"
    # 蒲公英apiKey
    pgyerApiKey="apiKey"
    
    #指定ipa输出地址
    project_path=$(pwd)
    #指定项目名
    project_name="项目名"
    #描述信息
    des=`cat ci-beta-description.txt`
    echo "des:+$des"
    packageTime="打包时间:【`date \"+%Y-%m-%d %H:%M:%S\"`】---"
    echo $packageTime
    
    ipa_path="${project_path}/build/(项目名称)_debug"
    
    if [ -e ${ipa_path}/${project_name}.ipa ]; then
    
        RESULT=$(curl -F "_api_key=${pgyerApiKey}" \
        -F "file=@${ipa_path}/${project_name}.ipa" \
        -F "buildInstallType=2" \
        -F "buildPassword=1230" \
        -F "buildUpdateDescription=${packageTime}${des}" \
        https://www.pgyer.com/apiv2/app/upload)
    
        # echo ${RESULT}
        if [ "${RESULT}" ]; then
            echo "===完成蒲公英平台上传==="
        else
            echo "===上传蒲公英平台失败==="
        fi
        # open ${ipa_path}
    else
        echo "===上传蒲公英平台失败==="
    fi
    
    5. Keychains and Provisioning Profiles Management

    login.keychain 文件路径 /Users/(用户名)/Library/Keychains

    image image

    问题

    error: Couldn't load -exportOptionsPlist: The file “ExportOptions.plist” couldn’t be opened because there is no such file.
    Error Domain=NSCocoaErrorDomain Code=260 "The file “ExportOptions.plist” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/ageren/.jenkins/workspace/Vol_Chat/build/ExportOptions.plist, NSUnderlyingError=0x7fb479178710 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
    

    解决

    /Users/(用户名)/.jenkins/workspace/(项目名称)/build/路径新建ExportOptions.plist文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>compileBitcode</key>
        <false/>
        <key>method</key>
        <string>development</string>
        <key>provisioningProfiles</key>
        <dict>
            <key>(APP bundle ID)</key>
            <string>(描述文件名称)</string>
        </dict>
        <key>signingCertificate</key>
        <string>iPhone Developer</string>
        <key>signingStyle</key>
        <string>manual</string>
        <key>stripSwiftSymbols</key>
        <true/>
        <key>teamID</key>
        <string>(组织编号)</string>
        <key>thinning</key>
        <string>&lt;none&gt;</string>
    </dict>
    </plist>
    
    

    相关文章

      网友评论

        本文标题:iOS Jenkins 自动打包上传至蒲公英 持续集成

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