6.5 腳本 GitHub

2018-02-24 15:22 更新

腳本 GitHub

所以現(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)單的方式。

服務(wù)

首先我們來(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ā)者文檔。

GitHub API

服務(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*
"
}

在一個(gè)問(wèn)題上評(píng)論

然而,如果想要在網(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?的信息。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)