簡體   English   中英

gitlab,接收后,部署

[英]gitlab, post-receive, deploy

應該很簡單,但也許我不了解這里的全局。 我已經安裝了一個在Ubuntu 16.04 / Apache上運行良好的GitLab(綜合)。 在同一台機器(相同的Apache)上,我有應該通過GitLab更新的www。

由於我在同一台機器上,因此使用webhook或其他復雜機制毫無用處。 我只想將“提交到母版”復制到www文件夾,所以我選擇了custom_hooks,如此處所述http://docs.gitlab.com/ce/administration/custom_hooks.html

我創建了一個文件接收后,賦予git權限(還有文件夾),並且觸發器正在工作

#!/bin/bash
mkdir testdir

該目錄是在提交時創建的。

可能是一個愚蠢的問題,但是要將GIT回購文件復制到哪里?

我看到了很多在客戶端上創建鈎子的教程,我應該在www文件夾中創建另一個GIT客戶端並使用它的鈎子嗎?

這不能在gitlab主文件夾的GIT服務器端完成嗎?

預先感謝您的指導,

好吧,我想通了自己。 萬一有人需要,首先我在這里找到了一個很好的教程: https : //www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks

我完全想念的是,安裝GitLab不會安裝git本身:)僅創建一個用戶+組'git'。 因此,所有GitLab項目的文件夾都具有git結構:

/var/opt/gitlab/git-data/repositories/<GROUP>/<PROJECT>

只是(git)文件夾,由客戶端推送,就像我嘗試並成功從網絡中的另一台計算機推送(從Windows)

現在問題恢復了,當然可以在GitLab所在的服務器機器上安裝git了:

sudo apt-get install git

然后,測試您是否可以簽出某個分支並將其復制到/ www /文件夾(文件夾必須具有用戶權限,以便日后使用git)

git --work-tree=/var/www/html/<MY_WWW_DEPLOY_FOLDER> --git-dir=/var/opt/gitlab/git-data/repositories/<MY_GITLAB_PROJECT_REPO> checkout -f

成功。 現在所有文件都出現在deploy文件夾中。

此外,當有人推送存儲庫時,問題會繼續觸發自動部署,為此,您必須在GitLab項目文件夾中創建一個名為custom_hooks的文件夾

/var/opt/gitlab/git-data/repositories/<MY_GITLAB_PROJECT_REPO>/custom_hooks/

在內部,創建一個名為post-receive的新文件,並為git用戶賦予+ x權限。我還沒有完成這一部分,因為我還沒有決定使用哪種語言進行post-receive。 似乎可以是任何類型,甚至可以是C編譯的可執行文件,只要具有+ x權限,並且可以接受一些(記錄不足的)GIT回調參數即可。

干杯,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM