利用jenkins的api來完成相關工作流程的自動化

[本文出自天外歸云的博客園]

背景

1. 實際工作中涉及到安卓客戶端方面的測試,外推或運營部門經常會有很多的渠道,而每個渠道都對應著一個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/jenkins'user_id = '需替換'api_token = '需替換'server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=api_token)job_name = '需替換'last_build_number = server.get_job_info(job_name)['lastBuild']['number']this_build_number = last_build_number+1if server.get_build_info(job_name,last_build_number)['building'] == False:server.build_job(job_name, parameters={"channel":channel}, token=api_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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372893.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372893.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

擁有成本分析:Oracle WebLogic Server與JBoss

Crimson Consulting Group 撰寫的非常有趣的白皮書 ,比較了Weblogic和JBoss之間的擁有成本 。 盡管JBoss是免費的,但該白皮書卻嚴肅地宣稱,從長遠來看,Weblogic更便宜。 盡管此研究是由Oracle贊助的,但它看起來非常嚴肅…

mysql limit 分頁 0_Mysql分頁之limit用法與limit優化

Mysql limit分頁語句用法與Oracle和MS SqlServer相比,mysql的分頁方法簡單的讓人想哭。--語法:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset--舉例:select * from table limit 5; --返回前5行select * from table limit 0…

與硒的集成測試

總覽 我已經使用了一段時間,遇到了一些似乎可以使生活更輕松的事情。 我以為可以將其作為教程分享,所以我將向您介紹這些部分: 使用Maven設置Web項目,配置Selenium以在CI上作為集成測試運行 尋找使用“頁面對象”為網站中的頁面…

linux每天一小步---sed命令詳解

1 命令功能 sed是一個相當強大的文件處理編輯工具,sed用來替換,刪除,更新文件中的內容。sed以文本行為單位進行處理,一次處理一行內容。首先sed吧當前處理的行存儲在臨時的緩沖區中(稱為模式空間pattern space&#xf…

mysql trace工具_100% 展示 MySQL 語句執行的神器-Optimizer Trace

在上一篇文章《用Explain 命令分析 MySQL 的 SQL 執行》中,我們講解了 Explain 命令的詳細使用。但是它只能展示 SQL 語句的執行計劃,無法展示為什么一些其他的執行計劃未被選擇,比如說明明有索引,但是為什么查詢時未使用索引等。…

MOXy作為您的JAX-RS JSON提供程序–服務器端

在以前的系列文章中,我介紹了如何利用EclipseLink JAXB(MOXy)創建RESTful數據訪問服務。 在本文中,我將介紹在服務器端利用MOXy的新JSON綁定添加對基于JAXB映射的JSON消息的支持有多么容易。 MOXy作為您的JAX-RS JSON提供程序–服…

006_過濾器

過濾器 過濾器(Filter)把附加邏輯注入到MVC框的請求處理,實現了交叉關注。所謂交叉關注(Cross-Cutting Concerns),是指可以用于整個應用程序,而又不適合放置在某個局部位置的功能,否…

Android_項目文件結構目錄分析

android項目文件結構目錄分析 在此我們新建了一個helloworld的項目,先看一些目錄結構: 這么多的文件夾和文件中,我們重點關注是res目錄、src目錄、AndroidManifest.xml文件: 一、res目錄主要是用來存放android項目的各種資源文件&…

實體 聯系 模型mysql_數據庫系統概念讀書筆記――實體-聯系模型_MySQL

bitsCN.com數據庫系統概念讀書筆記——實體-聯系模型前言為了重新回顧我寫的消息系統架構,我需要重新讀一下數據庫系統概念的前三章,這里簡單的做一個筆記,方便自己回顧基本概念實體-聯系(E-R)數據模型基于對現實世界的這樣一種認識&#xff…

使用Twitter Bootstrap,WebSocket,Akka和OpenLayers玩(2.0)

原始帖子可以在ekito網站上找到。 對于我們的一位客戶,我們需要顯示一張具有實時更新的車輛位置的地圖。 因此,我開始使用Play制作原型! 框架及其最新發布的版本2.0,使用Java API。 我從Play的網絡聊天室開始! 2.0個樣…

同步時間

同步時間 [rootlocalhost 03]# ntpdate 0.centos.pool.ntp.org 轉載于:https://www.cnblogs.com/cglWorkBook/p/5556920.html

mysql 5.6.23免安裝_mysql5.6.23免安裝配置

1.官網下載,并解壓2.環境變量,path下,追加mysql的bin路徑D:\Program Files\mysql\bin;3.mysql目錄下的my-default.ini重命名為my.ini,并添加下面的代碼basedirD:/Program Files/mysql #mysql路徑datadirD:/Program Files/mysql/d…

在Intellij IDEA中運行Vaadin應用

在本文中,我將向您展示如何使用Intellij IDEA運行vaadin應用程序。 Vaadin提供了一些用于Eclipse和Netbeans的插件。 但是對于Intellij IDEA來說,還沒有插件。 但是部署vaadin應用程序比其他兩個IDE容易。 這是您要遵循的步驟。 1.首先創建一個新項目&am…

mysql主從數據庫

Mysql主從配置,實現讀寫分離 大型網站為了軟解大量的并發訪問,除了在網站實現分布式負載均衡,遠遠不夠。到了數據業務層、數據訪問層,如果還是傳統的數據結構,或者只是單單靠一臺服務器扛,如此多的數據庫連…

安裝openstack時遇到的錯誤

學習opensatck的第一步是安裝DevStack來進行本機操作 1. 下面命令沒有權限,解決辦法:切換到root用戶下執行sudo -s echo "stack ALL(ALL) NOPASSWD: ALL" >> /etc/sudoers2. 執行下面命令提示沒有git,解決辦法:su…

Java EE 6示例– Galleria –第3部分

關于Galleria示例的先前文章( 第1 部分 | 第2部分 | 第3部分 | 第4部分 )指導您完成基礎知識以及對GlassFish和WebLogic的初始部署。 從今天開始,我嘗試在其中添加一些企業級功能,因為我發現他們在自己的項目中提出了很多要求。 我…

在 Windows 上測試 Redis Cluster的集群填坑筆記

redis 集群實現的原理請參考http://www.tuicool.com/articles/VvIZje集群環境至少需要3個節點。推薦使用6個節點配置,即3個主節點,3個從節點。新建6個文件夾 分別是 7000/7001/7002/7003/7004/7005將redis.windows.conf 復制一份然后修改配置文件中的下面…

不成為編程天才的5種貢獻方式

安迪萊斯特(Andy Lester)早在三月發布了原始指南,其中介紹了14種不成為編程天才或搖滾明星的貢獻開源的方法 ,我真的很喜歡這個想法。 這就是為什么我決定稍微采納一下這篇文章,并告訴您如何以及可以做什么來支持自己喜…

mysql數據庫設計與應用答案智慧樹_智慧樹_MySQL數據庫設計與應用_完整免費答案...

單位工程施工組織設計的技術經濟指標體系包括有()。A.工期指標B.勞動指標C.臺班利用率D.成本降低大跨徑橋梁采用()將會取得良好的技術經濟效益。A.橫移法施工B.頂推法施工C.轉體法施工D&#xf…