飛書源碼模板
A. Jenkins+飛書機器人發送通知
1. 在帶巧檔飛書群中添加自定義機器人
在飛書群中添加自定義機器人
2. python發送通知的腳本
在部署Jenkins的伺服器上創建一個目錄,名稱隨意,創建feizhutong.py腳本文件,需要將你的webhook地址拷貝到腳本中的url中。
思路是找出jenkins的內置變數,將jenkins內置變數定義為python腳蠢亂本系統變數(sys.argv[1]),運行腳本的時候將jenkins 幾個變數按順序穿給腳本輸出。所有項目可以共用一個腳本
1. 郵件的配置變數
${GIT_BRANCH} - build 的 Git 分支
${FILE,path="xxx"} - xxx 為指定的文件,文件內容可以在郵件中顯示。注意:xxx 是工作區目錄的相對路徑,不是絕對路徑。
${JOB_DESCRIPTION} - 顯示項目描述。
${BUILD_NUMBER} - 顯示當前構建的編號。
${SVN_REVISION} - 顯示 svn 版本號。還支持 Subversion 插件出口的 SVN_REVISION_n 版本。
${CAUSE} - 顯示誰、通過什麼渠道觸發這次構建。
${CHANGES } - 顯示上一次構建之後的變化。
${BUILD_ID} - 顯示當前構建生成的ID。
${PROJECT_NAME} - 顯示項目的全名。
${PROJECT_DISPLAY_NAME} - 顯示項目的顯示名稱。
$ {SCRIPT} - 從一個腳本生成自定義消息內容。自定義腳本應該放在 "$JENKINS_HOME/email-templates"。當使用自定義腳本時會默認搜索 $JENKINS_HOME/email-templatesdirectory 目錄。其他的目錄將不會被搜索。
${JENKINS_URL} - 顯示 Jenkins 伺服器的 url 地址(可以在系統配置頁更改)。
${BUILD_LOG_MULTILINE_REGEX} - 按正則表達式匹配並顯示構建日誌。
${BUILD_LOG} - 顯示最終構建日誌。
${PROJECT_URL} - 顯示項目的URL地址。
${BUILD_STATUS} - 顯示當前構建的狀態(失敗、成功等等)。
${BUILD_URL} - 顯示當前構建的URL地址。
${CHANGES_SINCE_LAST_SUCCESS} - 顯示上一次成功構建之後的變化。
${CHANGES_SINCE_LAST_UNSTABLE} - 顯示顯示上一次不穩固或者成功的構建之後的變化。
${ENV} - 顯示一個環境變數。
${FAILED_TESTS} - 如果有失敗的測試,顯示這些失敗的單元測試信息。
${PROJECT_URL} - 顯示項目的 URL。
$ {JELLY_SCRIPT} - 從一個Jelly腳本模板中自定義消息內容。有兩種模板可供配置:HTML和TEXT。你可以在 $JENKINS_HOME/email-templates 下自定義寬宴替換它。當使用自動義模板時,」template」參數的名稱不包含「.jelly」。
${TEST_COUNTS} - 顯示測試的數量。
#!/usr/bin/env python
#-*- encoding:utf-8 -*-
import sys
import requests
import time
JOB_URL = sys.argv[1]
JOB_NAME = sys.argv[2]
BUILD_NUMBER = sys.argv[3]
GIT_BRANCH= sys.argv[4]
currenttime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
url = '你的webhook地址'
method = 'post'
headers = {
'Content-Type': 'application/json'
}
json = {
"msg_type": "interactive",
"card": {
"config": {
"wide_screen_mode": True,
"enable_forward": True
},
"elements": [{
"tag": "div",
"text": {
"content": "項目名稱:" + JOB_NAME + "\n構建編號:第" + BUILD_NUMBER + "次構建\n運行時間:" + currenttime + "\n分支:" + GIT_BRANCH,
"tag": "lark_md"
}
}, {
"actions": [{
"tag": "button",
"text": {
"content": "查看報告",
"tag": "lark_md"
},
"url": JOB_URL,
"type": "default",
"value": {}
}],
"tag": "action"
}],
"header": {
"title": {
"content": JOB_NAME + " 構建報告",
"tag": "plain_text"
}
}
}
}
requests.request(method=method, url=url, headers=headers, json=json)
運行 Python 腳本語言需要一些環境,我使用Python3
yum install python3 python3-devel python3-pip
python3 -m pip install requests
3. Jenkins項目中添加配置
在配置中的構建中 加上一行命令即可
python3 /var/lib/jenkins/feishuinfo/feishutong.py $JOB_URL $JOB_NAME $BUILD_NUMBER $GIT_BRANCH
構建完成之後,飛書群中就能收到對應的消息:
點擊「查看報告」可以跳轉到Jenkins
B. Android面試:位元組飛書5輪面試Android Framework層的源碼就問了4輪!
說起位元組跳動的這次面試經歷,真的是現在都讓我感覺背脊發涼,簡直被面試官折磨的太難受了。雖然已經工作了三年,但是也只是純粹的在寫業務,對底層並沒有一個很深的認識,這次面試經歷直接的讓我感受到我和那些一線大廠開發之間的差距,說句實話,是真的很難受。
也不多蔽棗岩說什麼了吧,我們還是來回顧一下我在位元組跳動的這次面試經歷。 一共是面了5輪,至於為什麼面了5輪的原因,可能是面試官還是想試試我的技術水平吧 。
雖然說最終還是沒能拿到岩缺offer,但是這次的面試經歷讓我更加直觀的了解了我和大廠Android開發之間的差距,算是收益頗豐吧 。
總體來講,一面還是答得不錯的,或許是面試官覺得小瞧了我,接下來的四輪面試我彷彿遭到了嚴打
最後嘮叨幾句,希望各位沒拿到offer的真的不要灰心,可能你之前所有的失敗都是你成功的墊腳石,我面掛的時候也曾經自閉過,但更多的是反思,如何調整自己的復習計劃。在復習的時候一定要有自己的強項,能把這個知識點理解的很透徹並且把相關的知識點拓展出去。另一方面就是讓面試官看到你對這個崗位的熱情,能夠自發性地去學習與崗位相關的東西,下面給大家分享一份我珍藏的《2022最新Android中高級面試題合集》宏御質量非常搞,希望能對你有幫助!
內容概要 :包括 Handler、Activity相關、Fragment、service、布局優化、AsyncTask相關、Android 事件分發機制、 Binder、Android 高級必備 :AMS,WMS,PMS、Glide、 Android 組件化與插件化等面試題和技術棧!內容特點:條理清晰,含圖像化表示更加易懂。
Android Framework 開發雖然比較偏底層,圈子窄,但是能掌握一些原理的東西,可以觸類旁通,往應用層發展也可以。目前大公司的app開發都要基於模塊化、層次化、組件化、控制項化的思路來設計架構,而這一切的基礎都建立在Android Framework系統框架底層原理實現之上。