Python实现优雅打包

作者: jiantaocd | 来源:发表于2018-04-26 14:02 被阅读168次

    大家在开发过程中,是否也有这样的场景,测试同学跑过来说,给我打个包吧;可能这时你正在“写bug”,好嘛,为了团队,停下来,stash本地修改,Studio打个包,整个过程6分钟左右,然后继续编码;过一会儿老板又来了。。。

    本文就分享如何用Python打包来拯救你的时间。

    说下思路

    • 首先用Python封装gradle打包脚本,配置server环境参数(兼容windows)
    • 打包前同步git远程仓库代码
    • 打包后上传蒲公英
    • 上传后获取apk相关信息,发送通知邮件

    ps: 其实可以使用Jenkins集成环境来搞定上述所有需求。之前我们也用过Jenkins,整体都不错,唯一劣势是,当出现因为开发环境导致打包失败时,需要去打包服务器处理;但与其带来的效率来比,这些是值得的。本文介绍的Python打包就没更新打包环境的困扰,但不支持离线打包。

    最终效果

    邮件内容截图

    邮件内容主要有几个:

    • build版本号 ,方便下载时选择正确版本
    • api环境
    • App发布详情页及下载二维码
    • 最近20条git提交日志(在发版前夕,测试团队尤其关心这个

    代码实现

     # python入口函数
     if __name__ == '__main__':
     
         print (sys.argv)
         # 同步远程仓库代码
         updateGitRepo()
         # 执行打包
         exeGradleCmd()
         # 上传蒲公英并发送邮件
         uploadPgyer()
         
         
     # 看看git同步函数
     
     def updateGitRepo():
          print('update git repo start')
          # 当前目录时rn仓库
          ret = exeShellCmd('git pull')
          hasError = 'error' in ret 
          # 如果更新失败,就抛异常(类似Java的throw),停止任务 
          if(hasError):
              raise ValueError('git pull failed')
          # 进入Android项目同步
          ret = exeShellCmd('cd android && git pull')
          hasError = 'error' in ret  
          if(hasError):
              raise ValueError('git pull failed')
          
          print('update git repo end')
          return
        
    
    # 执行shell命令并返回执行结果
    def exeShellCmd(cmd):
          popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
          cmdRetBytes = popen.stdout.read()
          cmdRetStr = str(cmdRetBytes, encoding='utf-8')
          print(cmdRetStr)
          return cmdRetStr
    

    以上只贴了主函数和git同步函数代码实现,如果想了解代码细节及剩下的打包、上传和发送邮件等功能实现,请点击这里获取。

    如何打包(终端执行以下命令)

    # 默认打qa环境的包
    $ python3 releaseApk.py
    
    # 打线上环境的包
    $ python3 releaseApk.py online 
    
    # 指定不发送邮件
    $ python3 releaseApk.py noemail
    

    小结

    作为一名安卓开发人员,打包是工作内容之一,尤其在测试阶段,频率还很高。为了节约时间和提高效率,就想着能否使用Python来打包,于是就尝试着实现了该想法,才有了这篇文章。由于我对Python不是很熟悉,可能实现还有不少问题,如果您有好的建议,请告诉我;有如何问题都可联系我,与君共勉~

    本文为原创内容,转载请说明出处,文章首发及更新,请前往我的博客浏览

    推荐

    相关文章

      网友评论

        本文标题:Python实现优雅打包

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