W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
所以現(xiàn)在我們已經(jīng)介紹了 GitHub 的大部分功能與工作流程,但是任意一個小組或項(xiàng)目都會去自定義,因?yàn)樗麄兿胍獎?chuàng)造或擴(kuò)展想要整合的服務(wù)。
對我們來說很幸運(yùn)的是,GitHub 在許多方面都真的很方便 Hack。 在本節(jié)中我們將會介紹如何使用 GitHub 鉤子系統(tǒng)與 API 接口,使 GitHub 按照我們的設(shè)想來工作。
GitHub 倉庫管理中的鉤子與服務(wù)區(qū)塊是 GitHub 與外部系統(tǒng)交互最簡單的方式。
首先我們來看一下服務(wù)。 鉤子與服務(wù)整合都可以在倉庫的設(shè)置區(qū)塊中找到,就在我們之前添加協(xié)作者與改變項(xiàng)目的默認(rèn)分支的地方。 在 “Webhooks and Services” 標(biāo)簽下你會看到與?Figure?6-49類似的內(nèi)容。
Figure?6-49?中的 “Add webhook” 按鈕。 這會將你引導(dǎo)至一個類似Figure?6-51?的頁面。
?的 GitHub 開發(fā)者文檔。
服務(wù)與鉤子給你提供了一種方式來接收關(guān)于在倉庫中發(fā)生的事件的推送通知,但是如何獲取相關(guān)事件的詳情呢?如何自動化一些諸如添加協(xié)作者或給問題加標(biāo)簽的事情呢?
這是 GitHub API 派上用場的地方。 在自動化流行的趨勢下,GitHub 提供了大量的 API 接口,可以進(jìn)行幾乎任何能在網(wǎng)站上進(jìn)行的操作。 在本節(jié)中我們將會學(xué)習(xí)如何授權(quán)與連接到 API,如何通過 API 在一個問題上評論與如何修改一個 Pull Request 的狀態(tài)。
可以做的最基本的事情是向一個不需要授權(quán)的接口上發(fā)送一個簡單的 GET 請求。 該接口可能是一個用戶或開源項(xiàng)目的只讀信息。 例如,如果我們想要知道更多關(guān)于名為 “schacon” 的用戶信息,我們可以運(yùn)行類似下面的東西:
$ curl https://api.github.com/users/schacon
{
"login": "schacon",
"id": 70,
"avatar_url": "https://avatars.githubusercontent.com/u/70",
# …
"name": "Scott Chacon",
"company": "GitHub",
"following": 19,
"created_at": "2008-01-27T17:19:28Z",
"updated_at": "2014-06-10T02:37:23Z"
}
有大量類似這樣的接口來獲得關(guān)于組織、項(xiàng)目、問題、提交的信息?—?差不多就是你能在 GitHub 上看到的所有東西。 甚至可以使用 API 來渲染任意 Markdown 或?qū)ふ乙粋€?.gitignore
?模板。
$ curl https://api.github.com/gitignore/templates/Java
{
"name": "Java",
"source": "*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
"
}
然而,如果想要在網(wǎng)站上進(jìn)行一個操作,如在 Issue 或 Pull Request 上評論,或者想要查看私有內(nèi)容或與其交互,你需要授權(quán)。
這里提供了幾種授權(quán)方式。 你可以使用僅需用戶名與密碼的基本授權(quán),但是通常更好的主意是使用一個個人訪問令牌。 可以從設(shè)置頁的 “Applications” 標(biāo)簽生成訪問令牌。
希望這相當(dāng)容易做。 在這個 web 鉤子處理器中我們?yōu)g覽剛剛推送上來的每一個提交,在提交信息中查找字符串?Signed-off-by?并且最終使用 HTTP 向/repos/<user>/<repo>/statuses/<commit_sha>
?API 接口發(fā)送一個帶有狀態(tài)的 POST 請求。
在本例中可以發(fā)送一個狀態(tài)(success,?failure,?error)、一個發(fā)生了什么的描述信息、一個用戶可以了解更多信息的目標(biāo) URL 與一個 “context” 以防一個單獨(dú)的提交有多個狀態(tài)。 例如,一個測試服務(wù)可以提供一個狀態(tài)與一個類似這樣的驗(yàn)證服務(wù)也可能提供一個狀態(tài)?—?“context” 字段是用來區(qū)別它們的。
如果某人在 GitHub 中打開了一個新的 Pull Request 并且這個鉤子已經(jīng)設(shè)置,會看到類似Figure?6-55?的信息。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: