[網絡]登錄上“真香”的GitHub雲 和[網絡]薅資本主義羊毛之GitHub編譯OpenWrt
中的啟動Actions都是在push代碼上去後,是否可以通過api方式控制呢,順便傳遞一些參數過來?
以下將實現遇到的問題分解。
# 完整代碼
https://github.com/kukutt/actions(版本e8db2e0a5db8b97c4766ba23ac6f8fbe4e139182)
# 官方教程1: 關於actions觸法說明
https://help.github.com/en/actions/reference/events-that-trigger-workflows#external-events-repository_dispatch
# 官方教程2:關於api的說明
https://developer.github.com/v3/repos/#create-a-repository-dispatch-event
知識點1:如何設置api觸發
參考下圖:
知識點2:api如何觸發?
如下:
其中:
#$user:用戶名,就是github登錄名
#$password:密碼 ,就是github登錄密碼
#$repo:庫名
#$shell:按照設計,為執行的shell腳本名,(json字段action,知識點3解釋)
#$param:按照設計,為輸入參數,(json字段client_payload,知識點3解釋)
知識點3:如何獲取變量
Actions創建後,api傳遞過來的變量保存在GITHUB_EVENT_PATH的文件中。以json格式保存。
變量可以通過jq提取。例如獲取param1的參數,按照如下操作:
- 查看環境變量,GITHUB開頭
- 獲取GITHUB_EVENT_PATH指向文件內容
- 用jq命令進一步提取GITHUB_EVENT_PATH字段,但是發現個問題,提取字段帶引號
- 可以用sed去掉引號,最終提煉獲取變量命令如下:
<code>param1
=`cat$GITHUB_EVENT_PATH
| jq".client_payload.param1"
| sed's/"//g'
`/<code>
如圖:
到此,api啟動GitHub雲結束了。經過測試發現,GitHub的Actions限制了一個賬戶只能啟動25次。所以,大家謹慎合理使用,並且,不要掛一下不合法的應用。
GitHub的Actions功能還有沒有什麼好玩的?