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