需求来源
在构建jenkins脚本自动化集成中,iOS应和android保持一致。之前没有接触过iOS开发,首先得将项目跑起来,使用的IDE是Xcode 该需求的Android 实现-【Jenkins】在本地的jenkinsfile中为Android项目gradle.properties配置相关属性并在通过BuildConfig类调用
接触记录
整个的jenkins File文件项目:
问题定位
主要目的是通过在build之前对该配置进行修改: 在jenkins进行Build之前就将上述数据0改为1;这样就变成测试环境了。
解决思路
- jenkins中同Android一样在web配置一个切换勾选
- 构建一个新的py脚本专门对上述的AuthConstants.h文件进行修改(后续会在根据这个接着处理开源工作)
- 在jenkins正式build之前调用上述文件进行修改测试环境配置;思路是通过正则表达式获取并gsed修改参数。在远端的机器上也得加上这个gsed
实际操作
根据上述思路入手,并不需要对iOS的文件进行修改。还是在jenkinsFile中进行修改,那么还是回到Android studio中开发比较熟悉。
构建一个h文件预先测试
执行如下的代码:
gsed -i s/$/hello/g test.h
使用sed对文件指定行内容修改或者行前后增加内容 执行了三次!!!得到下图结果。 而执行代码
gsed -i 1a添加的内容 test.h
功能展示: 在这里看到一个正则表达式的使用,用来测试一哈: 效果不如意,唉! 根本没有match到!这个正则到底怎么用才起效呢!!
最终解决
sed替换和正则表达式 简单来说gsed 其实就是 sed的高级版
gsed 's/kAppIsAlpha\s*[0-9]*/嫦娥奔月/g' test.h
但是打开源文件发现没有修改!!!! 最后发现得用如下的命令才会真正修改!
gsed -i 's/kAppIsAlpha\s*[0-9]*/kAppIsAlpha 1vhsfsaihewio/g' test.h
实际操作
正式在实际的修改环境入手试试!在py脚本上运行这个代码先!听大佬们说编译项目的机子好像咩有这个gsed,后续记得在机器上加这个。 python脚本如下:
import os
class CheckEnvironments:
def __init__(self):
if "IS_ALPHA_ENV" in os.environ:
self.is_alpha_env = os.environ.get("IS_ALPHA_ENV")
self.work_space = os.environ.get("WORKSPACE")
@staticmethod
def _get_is_alpha_env():
return os.environ.get("IS_ALPHA_ENV")
def start_check_environment(self):
print("[ * ] start check environment.")
if(self.is_alpha_env == 'true')
check_cmd = "gsed -i 's/kAppIsAlpha\s*[0-9]*/kAppIsAlpha 1/g' {}/GoChat/GoChat/ZegoAuthConstants.h".format(self.work_space)
else:
check_cmd = "gsed -i 's/kAppIsAlpha\s*[0-9]*/kAppIsAlpha 0/g' {}/GoChat/GoChat/ZegoAuthConstants.h".format(self.work_space)
print("[ * ] start check environment.")
print("[ * ] Parameter is_alpha_env is {}".format(self.is_alpha_env))
os.system(check_cmd)
print("[ * ] end check environment.")
在jenkins上也搭建一个IS_ALPHA_ENV 的开关接口即可!在清明假期把这个捋清后续回公司上编译机器将这个跑起来试试!
|