国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

git webhooks 實(shí)現(xiàn)自動(dòng)拉取代碼

marek / 2146人閱讀

摘要:而利用的功能,能夠讓我們省去這一步,下面我就以碼云的為例,實(shí)現(xiàn)服務(wù)端的代碼自動(dòng)同步部署。查看是哪個(gè)用戶執(zhí)行該命令參考文章使用腳本遠(yuǎn)程部署項(xiàng)目利用實(shí)現(xiàn)自動(dòng)部署代碼碼云通過(guò)實(shí)現(xiàn)自動(dòng)同步代碼部署執(zhí)行系統(tǒng)外部命令函數(shù)

當(dāng)進(jìn)行開(kāi)發(fā)的環(huán)境在本地,而運(yùn)行的環(huán)境要在服務(wù)端時(shí),每一次提交代碼都需要在服務(wù)端pull一次。而利用git的hooks功能,能夠讓我們省去這一步,下面我就以碼云的webhooks為例,實(shí)現(xiàn)服務(wù)端的代碼自動(dòng)同步部署。


更新歷史

2017.12.29:完成初稿

了解 git 的 hooks
關(guān)于 git 鉤子

Git 能在特定的重要?jiǎng)幼靼l(fā)生時(shí)觸發(fā)自定義腳本。 有兩組這樣的鉤子:客戶端的和服務(wù)器端的。 客戶端鉤子由諸如提交和合并這樣的操作所調(diào)用,而服務(wù)器端鉤子作用于諸如接收被推送的提交這樣的聯(lián)網(wǎng)操作。 你可以隨心所欲地運(yùn)用這些鉤子。

如何使用鉤子

鉤子都被存儲(chǔ)在 Git 目錄下的 ==hooks== 子目錄中。 也即絕大部分項(xiàng)目中的 ==.git/hooks== 。 當(dāng)你用 ==git init== 初始化一個(gè)新版本庫(kù)時(shí),Git 默認(rèn)會(huì)在這個(gè)目錄中放置一些示例腳本。這些腳本除了本身可以被調(diào)用外,它們還透露了被觸發(fā)時(shí)所傳入的參數(shù)。 所有的示例都是 shell 腳本,其中一些還混雜了 Perl 代碼,不過(guò),任何正確命名的可執(zhí)行腳本都可以正常使用 —— 你可以用 Ruby 或 Python,或其它語(yǔ)言編寫它們。 這些示例的名字都是以 ==.sample== 結(jié)尾,如果你想啟用它們,得先移除這個(gè)后綴。

把一個(gè)正確命名且可執(zhí)行的文件放入 Git 目錄下的 hooks 子目錄中,即可激活該鉤子腳本。 這樣一來(lái),它就能被 Git 調(diào)用。 接下來(lái),我們會(huì)講解常用的鉤子腳本類型。

具體使用可以參考官方文檔:Git Hookes

了解 webhooks

鉤子功能(callback),是幫助用戶 push 了代碼后,自動(dòng)回調(diào)一個(gè)你設(shè)定的 http 地址。 這是一個(gè)通用的解決方案,用戶可以自己根據(jù)不同的需求,來(lái)編寫自己的腳本程序(比如發(fā)郵件,自動(dòng)部署等);目前,webhooks 支持多種觸發(fā)方式,支持復(fù)選。

webhooks 的請(qǐng)求方式為POST請(qǐng)求,有兩種數(shù)據(jù)格式可以選擇,JSON 和 web 的 form參數(shù),可以自行選擇是否使用密碼來(lái)確定請(qǐng)求。(注意:該密碼是明文)

不同托管平臺(tái)的POST數(shù)據(jù)格式都不太一樣,不過(guò)也不會(huì)有太大影響,只是解析數(shù)據(jù)的時(shí)候注意就行了,下面是碼云的 Push 操作回調(diào)的 json 數(shù)據(jù):

{
    "before": "fb32ef5812dc132ece716a05c50c7531c6dc1b4d", 
    "after": "ac63b9ba95191a1bf79d60bc262851a66c12cda1", 
    "ref": "refs/heads/master", 
    "user_id": 13,
    "user_name": "123", 
    "user": {
      "name": "123",
      "username": "test123",
      "url": "https://gitee.com/oschina"
    }, 
    "repository": {
        "name": "webhook", 
        "url": "http://git.oschina.net/oschina/webhook", 
        "description": "", 
        "homepage": "https://gitee.com/oschina/webhook"
    }, 
    "commits": [
        {
            "id": "ac63b9ba95191a1bf79d60bc262851a66c12cda1", 
            "message": "1234 bug fix", 
            "timestamp": "2016-12-09T17:28:02 08:00", 
            "url": "https://gitee.com/oschina/webhook/commit/ac63b9ba95191a1bf79d60bc262851a66c12cda1", 
            "author": {
                "name": "123", 
                "email": "123@123.com", 
                "time": "2016-12-09T17:28:02 08:00"
            }
        }
    ], 
    "total_commits_count": 1, 
    "commits_more_than_ten": false, 
    "project": {
        "name": "webhook", 
        "path": "webhook", 
        "url": "https://gitee.com/oschina/webhook", 
        "git_ssh_url": "git@gitee.com:oschina/webhook.git", 
        "git_http_url": "https://gitee.com/oschina/webhook.git", 
        "git_svn_url": "svn://gitee.com/oschina/webhook", 
        "namespace": "oschina", 
        "name_with_namespace": "oschina/webhook", 
        "path_with_namespace": "oschina/webhook", 
        "default_branch": "master"
    }, 
    "hook_name": "push_hooks", 
    "password": "pwd"
}

其他的具體數(shù)據(jù)可以到各個(gè)官網(wǎng)查看:碼云、Coding、GitHub

在 Ubuntu + Apache + 碼云的嘗試 準(zhǔn)備工作

1、首先你要搭建好LAMP的的開(kāi)發(fā)環(huán)境 可以看騰訊開(kāi)發(fā)者實(shí)驗(yàn)室的課程

2、當(dāng)然要有g(shù)it的環(huán)境了

3、要將代碼方在一個(gè)提供webhooks支持的代碼托管平臺(tái)上,如果自己搭建 git 服務(wù)器則要自己實(shí)現(xiàn) webhooks 回調(diào)

開(kāi)始干活

創(chuàng)建web服務(wù)器用戶目錄,這里以apache用戶為例,不同的環(huán)境請(qǐng)根據(jù)自己環(huán)境自行修改:

sudo mkdir /var/www/.ssh
sudo chown -R apacheuser /var/www/.ssh/  // 這里的用戶要是 Apache 的運(yùn)行用戶,下同

生成公鑰

公鑰有兩個(gè):1. git用戶公鑰,2. 部署公鑰:

用戶公鑰(用于git clone時(shí)認(rèn)證權(quán)限)

ssh-keygen -t rsa -C "sample@gmail.com" # 填自己的郵箱
 # 然后一直回車就行
 # 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請(qǐng)查看提示上的路徑

部署公鑰

 sudo -Hu apacheuser ssh-keygen -t rsa  # 請(qǐng)選擇 "no passphrase",一直回車下去

配置公鑰

用戶公鑰

sudo cat /root/.ssh/id_rsa.pub # 查看生成的密鑰內(nèi)容,復(fù)制全部

將公鑰的內(nèi)容粘貼到用戶->設(shè)置 中的SSH公鑰中

部署公鑰

sudo cat /var/www/.ssh/id_rsa.pub # 查看生成的密鑰內(nèi)容,復(fù)制全部

將公鑰內(nèi)容添加到具體項(xiàng)目 -> 管理 中的部署公鑰

git 的全局配置

sudo -Hu apacheuser git config --global credential.helper store # 永久保存
sudo -Hu apacheuser git config --global user.name "name" 
sudo -Hu apacheuser git config --global user.email "shample@gmail.com" # 郵箱請(qǐng)與碼云上一致

配置完成之后可以 clone 或 pull 項(xiàng)目來(lái)驗(yàn)證是否配置成功(注意:要切換成Apache運(yùn)行用戶來(lái)進(jìn)行操作),若多次操作只需輸入一次用戶名、密碼,即配置成功,若每一次操作都有輸入用戶名密碼,則配置不成功,需要重新檢查配置。

準(zhǔn)備鉤子文件

在你的www目錄建立一個(gè)目錄hook, 里面放上一個(gè)php文件index.php,內(nèi)容如下:

修改目錄權(quán)限:

chown -R apacheuser /var/www/hook # 這里請(qǐng)改成你創(chuàng)建的hook目錄
chown -R apacheuser /var/www/Project # 這里請(qǐng)改成你的項(xiàng)目目錄

確保你的hook文件可以訪問(wèn):http://example.com/hook/index... ,鉤子準(zhǔn)備完成。

配置webhooks

如果鏈接可用,則大功告成,只需把倉(cāng)庫(kù) clone 之后,再向碼云提交,變回自動(dòng)被 服務(wù)器 pull

注意事項(xiàng)

如果配置都沒(méi)有問(wèn)題,但是就是不會(huì)自動(dòng)拉取,那應(yīng)該是用戶的權(quán)限配置問(wèn)題,可以先查看運(yùn)行php代碼的具體用戶是什么,然后為該用戶開(kāi)啟權(quán)限。

system("whoami"); // 查看是哪個(gè)用戶執(zhí)行該命令
參考文章

使用PHP腳本遠(yuǎn)程部署git項(xiàng)目

利用WebHook實(shí)現(xiàn)PHP自動(dòng)部署Git代碼

Gitee碼云通過(guò)WebHooks實(shí)現(xiàn)自動(dòng)同步代碼部署

PHP執(zhí)行系統(tǒng)外部命令函數(shù):exec()、passthru()、system()、shell_exec()

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/26293.html

相關(guān)文章

  • Docker + Jenkins + webhooks 自動(dòng)部署基礎(chǔ)實(shí)踐

    摘要:自動(dòng)部署基礎(chǔ)實(shí)踐熟悉的基本操作實(shí)現(xiàn)本地后自動(dòng)構(gòu)建部署服務(wù)此實(shí)踐用于優(yōu)化自己在實(shí)際工作中的工作流在本地開(kāi)發(fā)到服務(wù)器登錄云服務(wù)器或者簡(jiǎn)化流程后本地開(kāi)發(fā)云服務(wù)器自動(dòng)構(gòu)建部署本實(shí)踐將結(jié)合技術(shù)來(lái)實(shí)現(xiàn)云服務(wù)器對(duì)各種環(huán)境的切換與部署。 Docker + Jenkins + webhooks 自動(dòng)部署基礎(chǔ)實(shí)踐 熟悉 jenkins 的基本操作 ?? 實(shí)現(xiàn)本地 git push 后 jenkins 自...

    Charlie_Jade 評(píng)論0 收藏0
  • Node + Git + Webhook 自動(dòng)化部署

    摘要:正文準(zhǔn)備首先確定需要完成的內(nèi)容明確需求監(jiān)聽(tīng)指定提交執(zhí)行指定多個(gè)腳本而且因?yàn)槲疫@邊是需要分別對(duì)和目錄分別執(zhí)行部署命令。部署部署我們只需要對(duì)然后就可以在本地開(kāi)發(fā)完之后推送,服務(wù)器就能自動(dòng)拉取代碼并且部署。 前言 之前斷斷續(xù)續(xù)在重構(gòu)一個(gè)項(xiàng)目,然后發(fā)現(xiàn)功能一開(kāi)始設(shè)計(jì)太多了,可能需要花大量時(shí)間來(lái)增加,但是核心功能基本完成,于是想著能不能半上線狀態(tài),然后通過(guò)更新提交git,讓服務(wù)器部署自動(dòng)更新。這...

    JayChen 評(píng)論0 收藏0
  • 使用 GitHub 和 Python 實(shí)現(xiàn)持續(xù)部署

    摘要:該簽名由一個(gè)密碼,請(qǐng)求體的十六進(jìn)制摘要,并使用哈希生成。調(diào)試打印語(yǔ)句顯示了從請(qǐng)求體收到的短提交哈希。這是持續(xù)部署的關(guān)鍵。 借助 GitHub 的網(wǎng)絡(luò)鉤子webhook,開(kāi)發(fā)者可以創(chuàng)建很多有用的服務(wù)。從觸發(fā)一個(gè) Jenkins 實(shí)例上的 CI(持續(xù)集成) 任務(wù)到配置云中的機(jī)器,幾乎有著無(wú)限的可能性。這篇教程將展示如何使用 Python 和 Flask 框架來(lái)搭建一個(gè)簡(jiǎn)單的持續(xù)部署(CD)...

    nodejh 評(píng)論0 收藏0
  • Python 使用 Tornado 框架實(shí)現(xiàn) WebHook 自動(dòng)部署 Git 項(xiàng)目

    摘要:使用框架實(shí)現(xiàn)自動(dòng)部署項(xiàng)目為了方便開(kāi)發(fā)測(cè)試或項(xiàng)目部署至服務(wù)器不那么繁瑣,搞一個(gè)自動(dòng)部署的小輪子也是必要的。同時(shí)配置項(xiàng)目托管平臺(tái)的個(gè)人私鑰或項(xiàng)目公鑰,保證能直接拉取。 gohook Python 使用 Tornado 框架實(shí)現(xiàn) WebHook 自動(dòng)部署 Git 項(xiàng)目 為了方便開(kāi)發(fā)測(cè)試或項(xiàng)目部署至服務(wù)器不那么繁瑣,搞一個(gè)自動(dòng)部署的小輪子也是必要的。 小輪子需要涉及到 Coding 項(xiàng)目托管平...

    notebin 評(píng)論0 收藏0
  • Jenkins 實(shí)現(xiàn)自動(dòng)構(gòu)建與持續(xù)集成

    摘要:本文通過(guò)鉤子實(shí)現(xiàn)了,本地代碼,會(huì)自動(dòng)響應(yīng)并拉取碼云上最新的代碼值服務(wù)器上,使得本地提交代碼時(shí),線上能夠同步的更新代碼,省去了手動(dòng)更新服務(wù)器上代碼的重復(fù)工作。思考下我的需求本地代碼到碼云,自動(dòng)拉取最新的代碼。 * 寫在前面的一段話:? ? ? ? ? 根據(jù)目前的工作需要,以及為了接下來(lái)新產(chǎn)品前后端間更高效的協(xié)同,我決定爬一下Jenkins的坑。本文通過(guò)git鉤子+Jenkins實(shí)現(xiàn)了,...

    Baoyuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<