পোস্ট-রিসিভ হুক দিয়ে কীভাবে গিটলাব সেটআপ করবেন?


19

আমি একটি সার্ভারে গিটল্যাব ব্যবহার করছি এবং মাস্টার ব্রাঞ্চের প্রতিশ্রুতিবদ্ধতার জন্য আমার গিট সংগ্রহস্থলটিকে অন্য ওয়েবসভারে চাপ দিতে চাই। সুতরাং আমি যখন ওয়েবসাইটটির নতুন সংস্করণে চাপ দিই তখন প্রোডাকশন সার্ভার আপডেট হয়ে যায়। আমি জানি গিটল্যাবের ভিতরে হুক দিয়ে এটি সম্ভব হওয়া উচিত তবে আমি ঠিক কীভাবে খুঁজে পাচ্ছি না। নিম্নলিখিত গাইডটি ব্যবহার করার চেষ্টা করেছেন http://danielmiessler.com/study/git/#website তবে এটি গিটলব দিয়ে ব্যবহারের জন্য লিখিত হয়নি তাই আমি অনুপস্থিত অংশগুলি হারিয়েছি।

প্রোডাকশন ওয়েবসারভারে আমার কী করা দরকার এবং আমি তখন হুক ইউআরএল সেট করব?


আপনি নিয়মিত গিট হুক ব্যবহার করতে পারেন, যদি গিট সার্ভারে আপনার রুট অ্যাক্সেস থাকে তবে পোস্ট কমিট হুকটি
ডোকা

আপনি কাস্টম গিট হুক চেষ্টা করতে পারেন ।
Monsta

উত্তর:


9

গিটল্যাব ইতিমধ্যে অভ্যন্তরীণভাবে পোস্ট-রিসিভ হুক ব্যবহার করে। আপনি সেই স্ক্রিপ্টটি ঘিরে ফেলতে পারেন এবং আপনার হুককেও কল করতে পারেন তবে ডক্স থেকে মনে হচ্ছে "অফিসিয়াল" উপায়টি হবে "ওয়েব-হুকস" ব্যবহার করা, অর্থাৎ গিটল্যাব পোস্ট-রিসিভে আপনার ওয়েবসভারকে কল করুন এবং তারপরে আপনার ওয়েবসভারটি সংগ্রহস্থল টান। আমি নিজে চেষ্টা করে দেখিনি, তবে যেহেতু এখন পর্যন্ত কেউ উত্তর দেয়নি আমি ভেবেছিলাম আমি আপনাকে সেই দিকে নির্দেশ করব:

ওয়েব-হুকগুলি সক্ষম করার জন্য আপনার প্রকল্পের মূল পৃষ্ঠায় যেতে হবে এবং মূল মেনুর নীচে উপরের ডান দিক থেকে হুকগুলি নির্বাচন করুন। ( http://yourgitlab.example.net/yourproject/hooks )। সেই পৃষ্ঠাটি থেকে একটি উদাহরণ এবং ডক্স যুক্ত রয়েছে ( http://yourgitlab.example.net/help/web_hooks )।

সম্পাদন করা: //

আমি আজ সকালে চেষ্টা করেছিলাম। এখানে একটি পিএইচপি স্ক্রিপ্ট উদাহরণ। এটি ধরে নিয়েছে যে আপনি ইতিমধ্যে রেপো ক্লোন করেছেন এবং ওয়েবসভারের কাছে সমস্ত প্রয়োজনীয় অনুমতি / এসএসএস কী সেট আপ রয়েছে।

<?php
$mirrordir='/srv/http/gitlabhooktest/gitmirror';
$gitdir=$mirrordir."/.git";

$json= file_get_contents('php://input');
#error_log($json);
$jsarr=json_decode($json,true);
#error_log(print_r($jsarr,true));
$branch=$jsarr["ref"];
if($branch=='refs/heads/master'){
 $cmd="git --work-tree=$mirrordir --git-dir=$gitdir pull";
 #error_log($cmd);
 exec($cmd);
} 

হ্যাঁ আমি জানি যেখানে হুকস পৃষ্ঠাটি পাওয়া যাবে। আমি কেবল জানি না যে ফাইলটি কীভাবে গিটলাব পোস্ট করা উচিত।
ত্রিস্তান

1
সম্পাদিত উত্তরটি দেখুন, আমি একটি উদাহরণ স্ক্রিপ্ট যুক্ত করেছি। নিখুঁত নাও হতে পারে তবে কমপক্ষে একটি দ্রুত পরীক্ষা কাজ করছে বলে মনে হচ্ছে
গ্রিফিউস

5

কাস্টম হুকগুলি সম্প্রতি যুক্ত হয়েছিল (যেহেতু গ্রিফিউস বলেছিলেন যে নিয়মিত হুকগুলি অভ্যন্তরীণভাবে ব্যবহৃত হয়): https://github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md

আপনি কেবল custom_hooksআপনার মধ্যে গিট রেপো একটি ডিরেক্টরি তৈরি করেছেন এবং এতে হুকগুলি রেখেছেন এবং গিটল্যাব নিশ্চিত করে যে তারা চালাচ্ছে।


4

বিকাশকারীরা গিটলাইট-শেল দিয়ে গিটোলাইট প্রতিস্থাপন করার পরে গিটল্যাবের পোস্ট-রিসিভ হুক নেই ।

অতএব আপনি করতে পারেন:

sudo -u git bash
touch /home/git/repositories/<repository name>.git/hooks/post-receive
vim /home/git/repositories/<repository name>.git/hooks/post-receive

এই ফাইলটিতে কমান্ডগুলি চালনার জন্য গিট ব্যবহারকারীর সমস্ত অনুমতি আছে তা নিশ্চিত করুন


hookফোল্ডারটি ইতিমধ্যে বিদ্যমান:hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/
মারিউসএসএস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.