河北网站开发哪家好,网站现在怎么做排名,商城小程序定制,wordpress是什么程序[本文出自天外归云的博客园] 背景 1. 实际工作中涉及到安卓客户端方面的测试#xff0c;外推或运营部门经常会有很多的渠道#xff0c;而每个渠道都对应着一个app的下载包#xff0c;这些渠道都记录在安卓项目下的一个渠道列表文件中。外推或运营部门经常会有新的渠道产生外推或运营部门经常会有很多的渠道而每个渠道都对应着一个app的下载包这些渠道都记录在安卓项目下的一个渠道列表文件中。外推或运营部门经常会有新的渠道产生而为了这些新增的渠道我们会将渠道配置到渠道列表文件中并push代码但是并不会为此在jenkins上重新进行一次整体构建。针对这些新增的零散渠道我们会在jenkins中分渠道进行构建。 2. 外推或运营部门会有自己的渠道列表我们在每次app的发版前都要对安卓项目中的渠道列表进行校对以防项目中的渠道列表漏掉某些外推或运营渠道。 提效思路 1. 可以将对分渠道进行构建的工作编写成脚本来完成 2. 可以将渠道列表的校对过程编写成脚本来完成。 脚本编写 1. 自动化构建脚本 # -*- coding: utf-8 -*-
import jenkins,timedef auto_build(channel):jenkins_server_url http://package.ms.netease.com/jenkinsuser_id 需替换api_token 需替换server jenkins.Jenkins(jenkins_server_url, usernameuser_id, passwordapi_token)job_name 需替换last_build_number server.get_job_info(job_name)[lastBuild][number]this_build_number last_build_number1if server.get_build_info(job_name,last_build_number)[building] False:server.build_job(job_name, parameters{channel:channel}, tokenapi_token)while server.get_build_info(job_name,last_build_number)[building] True:time.sleep(2)tip Build successfully, latest build number: str(this_build_number), channel: str(channel)print(tip)else:print The latest job is still building.if __name__ __main__:channel 需替换auto_build(channel) 知识说明这里用到了python-jenkins的api借助这些rest api我们可以做通过ui界面才能完成的日常任务。将过程缩减更加快捷直接。 程序中可变部分解释其中server.build_job方法传入的参数channel为分渠道构建参数也即jenkins job的参数这个参数随不同的日常job不同是不同的实际编写脚本的过程中这个parameters部分对应的就是jenkins job所需要传入的参数。除此之外代码中标注需替换的部分均为可变部分例如user_id和api_token这两个参数在jenkins个人页面设置中点击“Show API Token”按钮可以查看如下图所示 2. 渠道列表校对脚本 # -*- coding: utf-8 -*-
import os
curr_dir os.path.dirname(os.path.abspath(__file__))def test_check_channels(channels_txt_name,check_list_txt_name):channels_txt_path os.path.join(curr_dir,channels_txt_name)check_list_txt_path os.path.join(curr_dir,check_list_txt_name)the_channels []with open(channels_txt_path) as channels:for line in channels.readlines():line line.strip()if line ! :the_channels.append(line)with open(check_list_txt_path) as check_list:check_items check_list.readlines()for check_item in check_items:if check_item.strip() in the_channels:passelif check_item\n:passelse:print check_itemif __name__ __main__:test_check_channels(channels.txt,check_list.txt) 传参说明其中“channels.txt”文件为安卓项目中配置的渠道列表文件“check_list.txt”文件为待检查的外推或运营渠道列表文件。 文件内容格式文件中每一行都对应记录着一个渠道名。 运行结果“check_list.txt”文件中包含“channels.txt”文件中不包含的渠道会被过滤并打印出来。 应用与启示 应用在实际的工作中在面对运营或外推所给的渠道文件时可以通过渠道列表校对脚本过滤出不包含的渠道自动更新到安卓项目配置的渠道列表文件中并push代码。再通过jenkins自动化构建脚本对过滤出的渠道进行自动化构建。括号中的内容可以根据实际情况选择是否需要来进行编写脚本然后编写一个驱动脚本将以上分离的自动化过程组合拼装起来形成一个连贯的包含完整工作流的自动化过程。 启示这个过程本来就是日常测试工作中所要面对的稍加思考就可以编写一个包含自动化过程的脚本出来。对工作流的效率有一个提升的同时也是一个经验转化的过程。以后新人面对这样的过程只需要执行脚本就可以并不需要每次都翻看笔记或记住这个过程是什么。 转载于:https://www.cnblogs.com/LanTianYou/p/6430793.html