2014-06-11 22 views
7

Tôi thiết lập Gitlab mới trên CentO trên /opt/gitlab-6.9.2-0/apps/gitlab/ và tạo một kho lưu trữ mới trong nhóm phân phối liên tục. Đường dẫn đầy đủ là /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-satellites/continuous-delivery/cd-test . Chỉ có một tệp trong đường dẫn này là README.txt.Làm cách nào để thêm móc vào gitlab?

Điều tôi cố gắng đạt được là tạo một tệp mới khi ai đó đẩy các thay đổi lên máy chủ. Dưới đây là những gì tôi đã làm trên máy chủ:

  1. Tạo post-updateupdate file dưới .git/hooks/' each file creates a new file using echo "text" >> file_name`
  2. chmod họ 775.

Khi tôi thay đổi từ địa phương của tôi đến máy chủ, không có tệp nào được tạo. Vì vậy, tôi muốn biết những gì tôi phải làm để khắc phục vấn đề này.

Cập nhật 1

tôi thêm post-receivepost-update-repositories con đường như VonC suggested

[[email protected] hooks]# pwd 
/opt/gitlab-6.9.2-0/apps/gitlab/repositories/continuous-delivery/cd-test.git/hooks 
[[email protected] hooks]# ll 
total 48 
-rwxrwxr-x. 1 git git 452 Jun 10 06:01 applypatch-msg.sample 
-rwxrwxr-x. 1 git git 896 Jun 10 06:01 commit-msg.sample 
-rwxrwxr-x. 1 git git 44 Jun 11 00:37 post-receive 
-rwxrwxr-x. 1 git git 41 Jun 11 00:38 post-update 
-rwxrwxr-x. 1 git git 189 Jun 10 06:01 post-update.sample 
-rwxrwxr-x. 1 git git 398 Jun 10 06:01 pre-applypatch.sample 
-rwxrwxr-x. 1 git git 1642 Jun 10 06:01 pre-commit.sample 
-rwxrwxr-x. 1 git git 1281 Jun 10 06:01 prepare-commit-msg.sample 
-rwxrwxr-x. 1 git git 1352 Jun 10 06:01 pre-push.sample 
-rwxrwxr-x. 1 git git 4972 Jun 10 06:01 pre-rebase.sample 
lrwxrwxrwx. 1 git git 57 Jun 10 06:01 update -> /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-shell/hooks/update 
-rwxrwxr-x. 1 git git 3611 Jun 10 06:01 update.sample 

Cả hai tập tin chứa một kịch bản mà bổ sung thêm một dòng mới vào một tập tin hiện có, "post-receive-2" >> /var/log/hooks_test.log. sau đó đã đẩy các thay đổi từ máy cục bộ của tôi sang máy chủ. Nhưng nó vẫn không nối thêm văn bản.

Cập nhật 2

Script trong bài-nhận được là sai, nó không có tiếng vang. Sau khi tôi thêm tiếng vọng (echo "post-receive-2" >> /var/log/hooks_test.log thì nó hoạt động như mong đợi!

+0

bản sao có thể có của [Tệp hậu nhận tùy chỉnh bằng GitLab] (http://stackoverflow.com/questions/14317452/custom-post-receive-file-using- gitlab) –

Trả lời

7

Đó là vì repos vệ tinh đó không phải là thứ bạn sẽ đẩy vào, vì vậy móc của chúng không kích hoạt khi bạn nghĩ (tức là, không phải khi ai đó đang đẩy đến máy chủ GitLab)

PR 6185 giới thiệu tài liệu tổng quan archicture

/home/git/gitlab-satellites -... kiểm tra ra kho cho các yêu cầu hợp nhất và tập tin chỉnh sửa từ giao diện web này có thể được coi là một thư mục tập tin tạm thời

Kho lưu trữ vệ tinh được sử dụng bởi giao diện web để chỉnh sửa kho lưu trữ và wiki cũng là kho lưu trữ git.

Bạn nên thêm móc của mình vào bản chính trống ~git/repositories.

Hoặc (cập nhật Q4 năm 2014, từ GitLab 7.5+ Nov 2014), bạn có thể sử dụng custom hooks (thay vì webhooks), như mentioned below bởi Doka.

Móc git tùy chỉnh phải được định cấu hình trên hệ thống tệp của máy chủ GitLab.
Chỉ quản trị viên máy chủ GitLab mới có thể hoàn thành các tác vụ này. Vui lòng khám phá webhooks dưới dạng tùy chọn nếu bạn không có quyền truy cập hệ thống tệp.

  • Trên máy chủ GitLab, điều hướng đến thư mục lưu trữ của dự án.
    Để cài đặt thủ công, đường dẫn thường là /home/git/repositories/<group>/<project>.git.
    Đối với Omnibus, cài đặt đường dẫn thường là /var/opt/gitlab/git-data/repositories/<group>/<project>.git.
  • Tạo một thư mục mới tại địa điểm này có tên custom_hooks.
  • Bên trong thư mục custom_hooks mới, tạo tệp có tên khớp với loại móc.
    Để đặt tên tệp pre-receive, hãy đặt tên tệp là pre-receive không có đuôi.
  • Làm cho tệp móc thực thi và đảm bảo tệp được sở hữu bởi git.
+0

Tôi vừa thử thêm tệp vào kho lưu trữ trần nhưng vẫn không hoạt động. Tôi đã thêm thông tin về câu hỏi. – Anonymous

+0

@Anonymous bạn không thêm tập tin vào một repo trần: nó là một * trần * repo (.git chỉ, không có tập tin nào cả). xem http://stackoverflow.com/a/24115534/6309. Hook của bạn nên tạo các tập tin trong một đường dẫn riêng biệt. Nhưng cái móc đó phải được khai báo trong kho trống để được kích hoạt bằng một cú đẩy. – VonC

+0

Rất tiếc, tôi đã tìm thấy sự cố. Lệnh tôi viết sau khi nhận được là sai. – Anonymous

2

Tính đến phiên bản gitlab vỏ 2.2.0 (mà đòi hỏi GitLab 7.5+), các quản trị viên có thể thêm GitLab móc tùy chỉnh git để bất kỳ dự án GitLab. Vì vậy, bạn phải nâng cấp và thực hiện theo hướng dẫn từ đây: http://doc.gitlab.com/ce/hooks/custom_hooks.html

+0

Thú vị. Tôi đã quên câu trả lời trước đó có thể hưởng lợi từ tính năng mới đó.Tôi đã chỉnh sửa nó cho phù hợp để hiển thị nhiều hơn. +1 – VonC

1

Xem Custom Git Hooks - GitLab Documentation để biết cách chính thức để thực hiện.

Tóm tắt: Kể từ phiên bản gitlab-shell 2.2.0 (yêu cầu GitLab 7.5+), quản trị viên GitLab có thể thêm móc git tùy chỉnh vào bất kỳ dự án GitLab nào.

  1. Chọn dự án cần móc git tùy chỉnh.
  2. Trên máy chủ GitLab, điều hướng đến thư mục kho lưu trữ của dự án. Để cài đặt từ nguồn, đường dẫn thường là/home/git/repositories/< nhóm >/<project> .git. Đối với Omnibus, đường dẫn thường là/var/opt/gitlab/git-data/repositories/< nhóm >/<project> .git.
  3. Tạo một thư mục mới tại vị trí này có tên là custom_hooks.
  4. Bên trong thư mục custom_hooks mới, tạo một tệp có tên phù hợp với loại móc. Đối với một móc được nhận trước, tên tệp phải được nhận trước mà không có phần mở rộng.
  5. Làm cho tệp móc thực thi và đảm bảo tệp được sở hữu bởi git.
  6. Viết mã để thực hiện chức năng git hook như mong đợi. Móc có thể bằng bất kỳ ngôn ngữ nào. Đảm bảo 'shebang' ở trên cùng phản ánh đúng loại ngôn ngữ. Ví dụ: nếu tập lệnh có trong Ruby thì shebang có thể là #!/usr/bin/env ruby.

Nhưng hãy xem liên kết ở trên để biết tài liệu chính thức. Ở trên là ảnh chụp nhanh như hôm nay ...

+0

Xin lỗi @Doka, tôi không thấy câu trả lời của bạn. Chúng tôi tìm thấy cùng một thông tin. Tôi sẽ để lại câu trả lời trùng lặp của tôi vì nó có thêm thông tin ... –

Các vấn đề liên quan