[網絡]通過api啟動GitHub雲服務器

[網絡]登錄上“真香”的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觸發

參考下圖:

[網絡]通過api啟動GitHub雲服務器

只要把push改為repository_dispatch可以api啟動條件了

知識點2:api如何觸發?

如下:

[網絡]通過api啟動GitHub雲服務器

其中:

#$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開頭
[網絡]通過api啟動GitHub雲服務器

  • 獲取GITHUB_EVENT_PATH指向文件內容
[網絡]通過api啟動GitHub雲服務器

  • 用jq命令進一步提取GITHUB_EVENT_PATH字段,但是發現個問題,提取字段帶引號
[網絡]通過api啟動GitHub雲服務器

  • 可以用sed去掉引號,最終提煉獲取變量命令如下:
<code>

param1

=`cat

$GITHUB_EVENT_PATH

| jq

".client_payload.param1"

| sed

's/"//g'

`/<code>

如圖:

[網絡]通過api啟動GitHub雲服務器

到此,api啟動GitHub雲結束了。經過測試發現,GitHub的Actions限制了一個賬戶只能啟動25次。所以,大家謹慎合理使用,並且,不要掛一下不合法的應用。

GitHub的Actions功能還有沒有什麼好玩的?


分享到:


相關文章: