cocopods上传自动化

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

代码先上,解释在后面

#!/bin/sh
version="\"1.0.2\""

git tag ${version}

git push --tags

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


pod lib lint 文件名.podspec --allow-warnings
if [ $? -eq 0 ]; then
    pod spec lint 文件名.podspec --allow-warnings
    if [ $? -eq 0 ]; then
        pod trunk push 文件名.podspec --allow-warnings
    else
        echo "spec failed"
    fi

else
  echo "lib failed"
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代表执行失败


版权声明:本文为qq_36924305原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。