日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用jenkins的api来完成相关工作流程的自动化

發布時間:2023/12/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用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

總結

以上是生活随笔為你收集整理的利用jenkins的api来完成相关工作流程的自动化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。