2023-02-28 12:16:46 來源:騰訊云
背景:
cicd還是基于jenkins(spinnaker雖然也玩了,公司規(guī)模也小,簡單jenkins可以走天下)其實很多場景還是手動構建的,基本沒有做自動構建的jenkins流程。今天就突然有了那么一個需求。合作方大爺要頻繁修改一個鏡像。恩他們構建了鏡像上傳到倉庫(倉庫咱們的,對方木有),他們也不想第二次操作jenkins什么的...當然了他們也不會把代碼倉庫給到咱,然后我就想到了jenkins的構建觸發(fā)器-Generic Webhook Trigger去觸發(fā)構建。
jenkins-harbor webhook自動觸發(fā)構建
關于jenkins的觸發(fā)器插件:
搜索插件名稱:Generic Webhook Trigger
(相關資料圖)
重啟jenkins后,進入一個Pipeline項目設置,已經可以選擇這個觸發(fā)器了....
這里就忽略了,我這里早安裝了插件好多年了......
harbor or ccr倉庫webhook
其實我的鏡像倉庫使用了騰訊云的tcr鏡像倉庫,倉庫可以配置觸發(fā)器
看了一眼文檔觸發(fā)器操作指南:
順便看了一眼harbor的示例:https://www.1nth.com/post/jenkins_webhook/
參數結構目測都一樣的直接拿來用了!
jenkins Generic Webhook Trigger pipeline
jenkins創(chuàng)建pipeline
新建一個任務,自定義任務名稱,選擇流水線pipeline方式:
直接寫pipeline了:
pipeline { agent any triggers { GenericTrigger( genericVariables: [ [key: "harbor_type", value: "$.type", expressionType: "JSONPath"], [key: "harbor_image", value: "$.event_data.resources[0].resource_url", expressionType: "JSONPath"], [key: "image_tag", value: "$.event_data.resources[0].tag", expressionType: "JSONPath"], [key: "harbor_namespace", value: "$.event_data.repository.namespace", expressionType: "JSONPath"], [key: "repo_name", value: "$.event_data.repository.name", expressionType: "JSONPath"], ], token: "xxxxxxx" , causeString: " Triggered on $branch" , printContributedVariables: true, printPostContent: true, //regexpFilterText: "$ref", //regexpFilterExpression: "refs/heads/" + BRANCH_NAME regexpFilterText: "$harbor_type#$harbor_namespace#$repo_name", regexpFilterExpression: "pushImage#xxxx#xxxx" ) } stages { stage("Hello") { steps { sh """ echo harbor_type=$harbor_type echo harbor_image=$harbor_image echo harbor_image=$image_tag echo repo_name=$repo_name echo harbor_namespace=$harbor_namespace echo "do something..." #kubectl set image deployment.apps/$repo_name $repo_name=$harbor_image """ } } }}
鏡像倉庫創(chuàng)建觸發(fā)器:
設置名稱,觸發(fā)動作選擇了推送鏡像,命名空間,倉庫名稱設置好,版本tag空。url 的格式為:
https://jenkins.xxx.com/generic-webhook-trigger/invoke?token=xxxxxx
token為上面pipeline腳本中設置的token內容
相對于https://www.1nth.com/post/jenkins_webhook/。我增加了一個image_tag 的字段。因為我每次都是修改tag版本標簽的。習慣這樣了.后面會用到這個image_tag(變量的名稱其實都可以自定義,不一定用示例中的,我是偷懶,懶得改了)
構建鏡像push 測試
隨手push一下鏡像到鏡像倉庫:
docker push xxxx.xxxx.com/xxxx/xxxx:v2
看了一眼騰訊云鏡像倉庫的觸發(fā)器:
jenkins自動觸發(fā)構建成功:
下一步完善到kubernetes發(fā)布:
步驟就是sed修改tpl到y(tǒng)aml 文件然后apply yaml文件發(fā)布!
繼續(xù)完善一下pipeline:
pipeline { agent any triggers { GenericTrigger( genericVariables: [ [key: "harbor_type", value: "$.type", expressionType: "JSONPath"], [key: "harbor_image", value: "$.event_data.resources[0].resource_url", expressionType: "JSONPath"], [key: "image_tag", value: "$.event_data.resources[0].tag", expressionType: "JSONPath"], [key: "harbor_namespace", value: "$.event_data.repository.namespace", expressionType: "JSONPath"], [key: "repo_name", value: "$.event_data.repository.name", expressionType: "JSONPath"], ], token: "xxxxx" , causeString: " Triggered on $branch" , printContributedVariables: true, printPostContent: true, //regexpFilterText: "$ref", //regexpFilterExpression: "refs/heads/" + BRANCH_NAME regexpFilterText: "$harbor_type#$harbor_namespace#$repo_name", regexpFilterExpression: "pushImage#xxxx#xxxx" ) } stages { stage("Hello") { agent { label "xxxx" } steps { sh "sed -e "s/{image_tag}/$image_tag/g" /home/xxxx/jenkins/yaml/xxxx/xxxx.tpl > /home/xxxx/jenkins/yaml/xxxx/xxxx.yaml" sh "sudo kubectl apply -f /home/xxxx/jenkins/yaml/xxxx/xxxx.yaml --namespace=xxxx" // sh """ // echo harbor_type=$harbor_type // echo harbor_image=$harbor_image // echo harbor_image=$image_tag // echo repo_name=$repo_name // echo harbor_namespace=$harbor_namespace // echo "do something..." // #kubectl set image deployment.apps/$repo_name $repo_name=$harbor_image // """ } } }}
注意:regexpFilterExpression: "pushImage#xxxx#xxxx" 的格式??梢宰约宏P注一下Optional filter正則匹配(其實也可以偷懶不加,看個人吧)
演示先屏蔽了apply過程。只sed修改tpl文件為yaml文件:
xxx.tpl模板
apiVersion: apps/v1kind: Deploymentmetadata: name: xxxxspec: replicas: 1 strategy: rollingUpdate: maxSurge: 0 maxUnavailable: 1 selector: matchLabels: app: xxxx template: metadata: labels: app: xxxx spec: containers: - name: xxxx image: xxxx.xxxx.com/xxxx/xxxx:{image_tag} envFrom: - configMapRef: name: xxxx ports: - containerPort: 3000 protocol: TCP resources: requests: memory: "256M" cpu: "250m" limits: memory: "2048M" cpu: "2000m" imagePullSecrets: - name: xxxx
看一下生成的yaml文件:
例子其實就是一個wiki項目。這樣基本就完了。當然了我這里用的簡單指定了執(zhí)行的agent
agent { label "xxxx" }
stage的名字也可以換一下,這里偷懶了hello都沒有修改
stage("Hello") {}
好久不用了觸發(fā)器,這里就記錄一下......
然后吐槽一下騰訊云tcr鏡像服務的觸發(fā)器:
任務狀態(tài)的排序
這里說的是錯誤or成功的排序,首先在觸發(fā)器任務重錯誤的優(yōu)先級沒有那么高,所以將錯誤排在前面完全沒有必要:
正常的排序也完全沒有規(guī)律
這任務的id排序完全沒有規(guī)律....感覺沒有處理好......
后來我又觸發(fā)了幾次任務順序更是可怕,這也沒有失敗的優(yōu)先了 ?怎么排序的?且排序的失敗的時間格式也與正常的不一致?
已經反饋給相關人員期待能完善一下,就正常的任務排序就好了最多做一個成功失敗的勾選,這排序體驗太差了.....
標簽: Jenkins
- 加快虛擬仿真實訓基地建設 啟動職業(yè)學校信息化建設試點很必要
- “雙減”后如何在滿足學生多樣需求方面做“加法”?
- 處于生理活躍期且心理發(fā)展不成熟 高校開設公共衛(wèi)生必修課很必要
- 價格低于相應蔬菜零售價 西安投放約1萬噸政府儲備蔬菜
- 深受年輕消費群體所青睞 國潮風商品成為年貨新選擇
知識
- 他把銀行卡賣給騙子,“黑吃黑”“截胡”十萬元
- “老司機”4S店試駕豪車 結果油門當剎車撞了
- 新開工改造城鎮(zhèn)老舊小區(qū)5.34萬個
- 發(fā)動巡河志愿者2萬余名 “用心護好每一條河”
- 假客服的套路:偽裝成大平臺客服,層層布局引人上鉤
人物
- 浙江兩輪核酸檢測結果均為陰性 無新增本土陽性感染者
- 新疆阿克蘇地區(qū)庫車市發(fā)生4.1級地震 震源深度18千米
- 抵返哈爾濱人員須持48小時內核酸檢測陰性證明
- 浙大紫金港校區(qū)已解封 有7337人有序離開該校區(qū)
- 2021年廣東省第七屆風箏錦標賽落幕
- 黑龍江訥河市啟動全員核酸檢測 目前訥河市全員核酸檢測結果均為陰性
- 【同心粵港澳 攜手大灣區(qū)】南頭古城,搭建深港澳三地文化創(chuàng)意活動交流平臺
- 重慶入河排污口整治工作推進至全市26個區(qū)縣
- 四川省第二批政法隊伍教育整頓:立案審查調查省級政法機關干警58人
- 長三角區(qū)域生態(tài)環(huán)境部門“云簽約”長江大保護倡議書
- 古老長城重煥新生機
- 藏不住了!你同事里有許多“武林高手”……
- 浙江杭州2例無癥狀感染者系感染德爾塔變異株
- 喜馬拉雅的深情和誓言
- 浪漫之城打造山海城一體新地標
- 讓老年人更適應數字生活
- 內蒙古通遼市新增1例本土確診病例、1例無癥狀感染者
- 徐州無新增確診病例 核酸檢測55515人結果均為陰性
- 甘肅培樹“農家巧娘”增技能:返鄉(xiāng)創(chuàng)業(yè)掌勺又“掌柜”
- 內蒙古通遼市科爾沁區(qū)一地調整為中風險地區(qū)
- 上海本輪疫情涉及閉環(huán)管理的醫(yī)療機構全面恢復門急診
- 青年學生成艾滋病感染高發(fā)人群 “社會疫苗”如何打?
- 內蒙古滿洲里新增本土確診病例1例 當地開展第二輪大規(guī)模核酸檢測
- 江西無新增本土確診病例 上饒全面恢復正常生產生活秩序
- 中老鐵路上會四國語言的列車長:用心維護中老友誼的橋梁
- 海南首次發(fā)現有環(huán)志的世界極危鳥種勺嘴鷸
- 一場“網絡勸生者”和“網絡勸死者”的戰(zhàn)役
- 內蒙古通遼新增本土確診和無癥狀感染者各1例 軌跡公布
- 江西中煙工業(yè)有限責任公司原總經理姚慶艷接受審查調查
- 寧夏45例新冠肺炎確診病例均已治愈出院
- 內蒙古通遼市科爾沁區(qū)發(fā)現2名初篩陽性人員
- 生活在鬧鐘里的丈夫:自己遲一秒,漸凍癥妻子就會多一分疼
- 遼寧新冠肺炎確診病例零新增
- 11月28日16-24時,內蒙古新增本土確診病例1例
- 奧密克戎毒株為何“需要關注”?現有防疫工具還有效嗎?
- 黑龍江新增本土無癥狀感染者1例
- 這輩子一定要去趟這個公園 在這里“有種愛叫放手”
- 那年今日 | 一張漫畫漲知識之11月29日
- 寒潮預警!我國中東部迎大范圍降溫 黑龍江等地降幅可達12℃
- 冷空氣繼續(xù)影響我國中東部 華北黃淮等地有霧和霾天氣