• cocopods上传自动化


    事先声明:本文章的自动化上传仅限于本地配置都已完成,包括:github地址以及分支正确(用于打tag)、cocopods库配置完成、podspec文件配置完成,后续仅需要配置版本号。上文中实现打包自动化,结合cocopods自动化,可实现完整的发版自动化

    代码先上,解释在后面

    1. #!/bin/sh
    2. version="\"1.0.2\""
    3. git tag ${version}
    4. git push --tags
    5. sed -i "" "s#^ spec.version = .*# spec.version = ${version}#g" 文件名.podspec
    6. pod lib lint 文件名.podspec --allow-warnings
    7. if [ $? -eq 0 ]; then
    8. pod spec lint 文件名.podspec --allow-warnings
    9. if [ $? -eq 0 ]; then
    10. pod trunk push 文件名.podspec --allow-warnings
    11. else
    12. echo "spec failed"
    13. fi
    14. else
    15. echo "lib failed"
    16. fi

    步骤:

    1.新建一个空白文件,修改后缀名为.sh

    2.写入上文代码

    3.在终端进入.sh脚本文件所在目录。

    4.执行如下命令:

            sh 脚本文件名.sh

    详细解释下代码:

    version="\"1.0.2\""

    顾名思义,给version一个值,为"1.0.2",注意,\" 的意思是将 " 当做普通字符看,而不是关键字。\其实就是转义字符

    git tag ${version}

    git push --tags

    给github仓库打tag,tag为version的值。要求github仓库地址已经配置

    sed -i "" "s#^  spec.version      = .*#  spec.version      = ${version}#g"  文件名.podspec

    这里是修改文件的值,-i 是不复制文件,直接修改源文件。 "" 这个空字符串一定要有,不然报错,报错信息如下 extra characters at the end of q command

    #^  spec.version      = .* 这个意思是在文件中匹配字符串“  spec.version      =” 注意,空格也要完全一致才能匹配成功。 .* 的意思是匹配成功的后面的所有内容都将被替换,还需要注意的是,匹配成功的  spec.version      = 也会被替换掉

    #  spec.version      = ${version} 这个意思是讲前面的字符串替换成该字符串。包括空格数。

    文件名.podspec 被修改的文件,如果.sh脚本文件和podspec文件在同一级目录,可以直接写文件名,如果不是同一级目录,需要写路径。比如podspec在.sh的上一级,这里就是../文件名.podspec

    pod lib lint qplayer2-core.podspec --allow-warnings

    if [ $? -eq 0 ]; then

        pod spec lint qplayer2-core.podspec --allow-warnings

        if [ $? -eq 0 ]; then

            pod trunk push qplayer2-core.podspec --allow-warnings

        else

            echo "spec failed"

        fi

    else

      echo "lib failed"

    fi

    这里就很简单了,如果pod lib 成功了,就执行 pod spec命令,否则就打印 lib 失败。如果lib spec 都成功了,就运行push。

    额外需要解释的是:$? 是上一个命令的返回值,-eq 是等于的意思  0代表执行成功,1代表执行失败

  • 相关阅读:
    【C++面向对象程序设计】CH7 输入输出流
    Android轮播图控件com.github.pinguo-zhouwei:MZBannerView:v2.0.2
    Shopee虾皮API:获取商家店铺商品列表
    Redis —— 基础篇
    vue高德地图(二):获取并标记用户位置
    K8S 资源编排文件简介
    Go语言基础 基本数据类型使用
    大家都在用的福昕阅读器 foxit 你还不知道吗? 祛除水印&PDF转换&全功能解锁…
    C++ final和override的作用,以及使用场合
    基于【ESLint+JavaScript Standard Style】标准的VUE/JS/html风格指南
  • 原文地址:https://blog.csdn.net/qq_36924305/article/details/126894184