本文來自:
楊洪麗 極狐GitLab 高級網站可靠性工程師(SRE)
只使用極狐GitLab 存放代碼? 那你就 OUT 啦!
如果你也遇到了如圖 A / B / C / D 各位同學的煩惱,不要錯過這篇能夠讓你日常工作更高效的內容。

使用極狐GitLab Webhook 觸發(fā) Pipeline,打通工作消息通知
關于 A 和 B 同學的煩惱,可以使用?Webhook?觸發(fā) Pipeline
,打通工作消息通知
?的功能來解決。
眾所周知,極狐(GitLab) 采用遠程辦公工作模式,必然有許多需要協(xié)同處理的工作,這些工作當然是采用極狐GitLab 自帶的 issue 提交到協(xié)同方。
關于需要 SRE 協(xié)同處理的工作,目前是在?Teamwork?中創(chuàng)建 issue,里面有模板,大家可以根據自己的需求填寫。
緊急??或一般事件也無需擔心該 issue assign 給誰,因為對于 SRE 來說,他們有 on-call 的工作流程,所以我們會由 on-call 的同事來進行響應和處理。
1. 如何配置
獲取觸發(fā)器令牌
首先,需要選擇一個 Project,新建或者現有項目都行。根據下面步驟獲取 Webhook 觸發(fā)令牌 ??
設置 → CI/CD → 流水線觸發(fā)器 → 添加觸發(fā)器 → 復制觸發(fā)令牌。
注: 在上述配置頁面也會有使用 webhook?配置的 url ,可直接復制替換令牌使用。
配置 webhook
設置→ Webhooks → 選擇想要觸發(fā) Webhook 的事件進行勾選。
如當前我們需要的是當有新的 issue 創(chuàng)建時觸發(fā)該 Pipeline。

注:其中 URL 為上述獲取 trigger 令牌時復制的URL。
2. 整個通知流水線的實現
1.?我們可以用自己的喜好和擅長的語言寫腳本來完成以下功能:
-
獲取 Webhook 事件請求參數,所有請求參數都會以文件類型的 CI/CD Variable?形式保存在 CI Job 中,可以使用?
cat $TRIGGER_PAYLOAD
?或者運行類似的命令來查看; -
獲取當時的 On-caller;
-
自定義消息內容,發(fā)送消息至 Slack。
2.?CI Job 文件配置,設置只有?trigger
??時才執(zhí)行此 Job:
notify-sre:
stage: notify-sre
script:
- chmod +x scripts/***.py
- export TRIGGER_PAYLOAD=`cat $TRIGGER_PAYLOAD`
- python3 scripts/***.py
only:
refs:
- triggers
variables:
- $ISSUE_WEBHOOK == "true"
3. 實現效果
通知消息內容如圖:

這樣,既解決了 A ?同學的沒法及時響應,也解決了 B 同學的不知道 assign 給誰的問題。
使用極狐 GitLab 計劃流水線,打通工作消息通知
C 和 D 同學的問題,既然是機械式的工作,那我們可以設置定時任務去觸發(fā)流水線來完成需要手動處理的工作。
-
SRE 按照 Milestone 來管理日常的工作,周期是固定的,Manager 可能會忘記 Milestone 快結束了,但是程序不會忘記;
-
作為 SRE,每周都會進行升級,如果都由一個人來操作創(chuàng)建 issue 并完成部署升級,效率可想而知。極狐GitLab 可以幫助你實現自動排班并創(chuàng)建 issue。
1. 如何設置
設置計劃流水線

1.?Milestone 結束提醒設置計劃流水線觸發(fā)策略:
-
變量:
$NOTIFY_MILESTONE_END_ISSUE == "1"
-
時間:
首次提醒:14 號早上 10 點?
0 10 14 * *
最后提醒:17 號 18 點最后再友情提示一下:
0 18 17 * *
2.?自動化部署 SaaS 的 issue 創(chuàng)建和提醒:
-
變量:
$NOTIFY_RELEASE == "1"
-
時間:每周四上午 11 點?
0 11 * * 4
編寫 CI yml
-
設置?CI_PIPELINE_SOURCE?為?schedule;
-
特定 variable 執(zhí)行特定的 job。
image: ****:1.0
stages:
- notify_sre
milestone_issue:
stage: notify_sre
script:
- chmod +x scripts/1***.py
- python3 scripts/1.py
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" && $NOTIFY_MILESTONE_END_ISSUE == "1"
release-saas:
stage: notify_sre
script:
- chmod +x scripts/2.py
- python3 scripts/2.py
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" && $NOTIFY_RELEASE == "1"
2. 整個通知流水線的實現
我們可以用自己的喜好和擅長的語言寫腳本來完成以下功能:
-
Milestone 結束提醒:
獲取當前 Milestone;
統(tǒng)計所有 SRE 成員的 issue 個數;
自定義消息發(fā)送到 Slack。
-
Auto release issue 提醒:
獲取當時的 On-caller;
獲取創(chuàng)建 Auto release 的 issue 模版;
創(chuàng)建 issue,Assign 給 On-caller;
自定義消息內容發(fā)送到 Slack,@ On-caller。
3. 實現效果
Slack 通知消息如下:
-
Milestone 結束消息通知 ??
-
Auto release 消息通知 ??

以上只是使用極狐 GitLab 的一小部分自動化功能,極狐 GitLab 給開發(fā)者或運維人員都提供了非常大的空間來實現各自需要的自動化工作流,只需掌握一些簡單的編程技巧就能實現豐富多彩的結果,期待你的探索與分享。
參考
-
Slack 通知服務配置
-
消息變量文章來源:http://www.zghlxwxcb.cn/news/detail-442398.html
-
計劃流水線文章來源地址http://www.zghlxwxcb.cn/news/detail-442398.html
到了這里,關于解鎖極狐GitLab 自動化功能:Webhook 觸發(fā) Pipeline 與計劃流水線的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!