有没有比 shell 更猛烈一点的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
6yong
V2EX    程序员

有没有比 shell 更猛烈一点的?

  •  
  •   6yong 2017-05-24 14:39:15 +08:00 3873 次点击
    这是一个创建于 3064 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟是做 iOS 的,给公司搭了个构建服务器跑 jenkins,jenkins 上建任务来跑脚本( shell )进行打包,打完后上传的公司的 maven 仓库。

    现在为了使用更加方便,所以要进行更多的参数化来配置我们的脚本。(签名配置、UI 资源配置、git 信息提取、debug/release 等等) 目前已经 7 个参数了,估计还要增加个四五个。 脚本代码行数也越来越多,不方便维护。新人接手估计也够呛。

    所以想请教一下各位,有没有更好的方法管理脚本?或者更抽象的语言?

    脚本主要是配置各种参数给这两个工具 1.gym 开源的 xcode 打包工具( https://github.com/fastlane/fastlane/tree/master/gym ) 2.curl 上传到 maven

    18 条回复    2017-05-24 22:42:04 +08:00
    crysislinux
        1
    crysislinux  
       2017-05-24 14:41:38 +08:00
    可以换个脚本吧,比如 Python ?
    finab
        2
    finab  
       2017-05-24 14:50:22 +08:00
    。。。。。

    或许你知道 fastlane 吗?
    finab
        3
    finab  
       2017-05-24 14:50:58 +08:00
    擦,你知道啊,那你上面那些问题不是问题啊
    rockyou12
        4
    rockyou12 &nbs;
       2017-05-24 14:58:28 +08:00
    jenkins 自己就是 groovy 脚本啊,会 java 两下就上手了,虽然好多 groovy 语法用不了,有点坑。但人家带个插件和库还算全,基本不需要写 shell。
    54007
        5
    54007  
       2017-05-24 15:03:29 +08:00
    @crysislinux python 学需要调用 linux 命令才可以吧
    wellsc
        6
    wellsc  
       2017-05-24 15:04:28 +08:00
    powershell
    54007
        7
    54007  
       2017-05-24 15:04:50 +08:00
    maven 不是管理 jar 包的吗,也可以管理 ios 的代码吗
    hellojl
        8
    hellojl  
       2017-05-24 15:11:12 +08:00
    可以多建几个 job 啊,配置好上下游的关系。或者对 build 的脚本单独起一个 repo,在 Jenkins shell 中 clone & run
    6yong
        9
    6yong  
    OP
       2017-05-24 15:11:16 +08:00
    @54007 是文件就能管理
    6yong
        10
    6yong  
    OP
       2017-05-24 15:12:14 +08:00
    @finab gym 就是 fastlane 的其中一个功能
    xjj59307
        11
    xjj59307  
       2017-05-24 15:12:55 +08:00
    用 jenkins pipeline,没必要自己写脚本。

    https://jenkins.io/doc/book/pipeline/
    6yong
        12
    6yong  
    OP
       2017-05-24 15:21:58 +08:00
    先谢楼上各位 我在描述下我的需求吧

    现在我的脚本需要支持太多功能, 比如
    1、更改打包的版本号
    2、打包 debug 或 release 版本,或 all
    3、上传到 maven 的哪个仓库
    4、上传到 maven 显示的文件名
    。。。

    等等这些之前是写死在脚本内的,现在改由外部传参进去指定。
    现在脚本已经几百行了,要扩展更多的原本写死的参数,由于不是对象语言,所以维护起来越来越麻烦。
    所以想问大家是否有这方面经验
    finab
        13
    finab  
       2017-05-24 15:26:42 +08:00
    @6yong fastlane 不止 gym。你的担心代码乱,参数多,维护不便 可以用 fastlane 写呀
    ostholz
        14
    ostholz  
       2017-05-24 15:29:06 +08:00
    我用 ruby 写 iOS, 打包, 上传脚本.
    momocraft
        15
    momocraft  
       2017-05-24 15:40:47 +08:00
    build 一般也还是在处理 shell 命令和文件,可能 bash 已经是最方便的语言了

    可以考虑把一些流程抽象成 bash 函数?
    6yong
        16
    6yong  
    OP
       2017-05-24 15:51:11 +08:00
    @finab 好的 我再深入了解下
    kanchi240
        17
    kanchi240  
       2017-05-24 16:25:49 +08:00
    1、更改打包的版本号
    修改 pom 里面的版本号

    2、打包 debug 或 release 版本,或 all
    代码拉分支,配置文件里面配置不同的仓库

    3、上传到 maven 的哪个仓库
    代码拉分支,配置文件里面配置不同的仓库

    4、上传到 maven 显示的文件名
    不懂。。
    sosng
        18
    sosng  
       2017-05-24 22:42:04 +08:00
    用 fastlane,半天 ruby 经验,美滋滋
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5104 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 03:57 PVG 11:57 LAX 20:57 JFK 23:57
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86