G3 का उपयोग करके S3 पर प्रकाशित करें?


87

क्या किसी को भी यह करना आता है? अभी तक मुझे Google के माध्यम से कुछ भी उपयोगी नहीं मिला है।

मैं वास्तव में एक स्थानीय रेपो सेटअप करना चाहता हूं और git pushइसे S3 पर प्रकाशित करने के लिए उपयोग करना चाहता हूं , यह विचार संपत्ति पर स्थानीय संस्करण नियंत्रण है लेकिन S3 पर दूरस्थ भंडारण है।

क्या यह किया जा सकता है, और यदि हां, तो कैसे?


1
ओपी, वर्तमान में स्वीकृत उत्तर प्रश्न के समक्ष लागू नहीं होता है। क्या अधिक से अधिक अच्छे के लिए अद्यतन करना संभव होगा? मैं s3fsएक व्यवहार्य समाधान मानता हूं ।
bnjmn

1
@ बैंजामिन मेरा ध्यान इस एक पर वापस बुलाने के लिए धन्यवाद, यह अपडेट है।
एंड्रयू

क्या यह किसी दूरस्थ रिपॉजिटरी (कमिट्स के बैकअप इतिहास को संरक्षित करने के लिए) को लागू करने और एक एस 3 बाल्टी के साथ सिंक करने के लिए गिट हुक का उपयोग करने के लिए समझ में नहीं आएगा (जैसे:) s3cmd sync …?
फाबिएन स्नूवर्ट

जवाबों:


50

1 http://blog.spearce.org/2008/07/use-jgit-to-publish-on-amazon-s3.html के माध्यम से JGit का उपयोग करें

Jgit.sh डाउनलोड करें, इसका नाम बदलकर jgit रखें और इसे अपने रास्ते में रखें (उदाहरण के लिए $ HOME / bin)।

.Jit config फाइल को सेटअप करें और निम्नलिखित जोड़ें (अपनी AWS कुंजियों का प्रतिस्थापन):

$ विम ~ / .जित्

accesskey: aws access key
secretkey: aws secret access key

ध्यान दें, ac को निर्दिष्ट न करके: .jgit फ़ाइल में सार्वजनिक, S3 पर git फाइलें निजी होंगी (जो कि हम चाहते थे)। इसके बाद अपनी रिपॉजिटरी को स्टोर करने के लिए एक S3 बकेट बनाएं, चलो इसे git-repos कहें, और फिर अपलोड करने के लिए git रिपॉजिटरी बनाएं:

s3cmd mb s3://git-repos
mkdir chef-recipes
cd chef-recipes
git init
touch README
git add README
git commit README
git remote add origin amazon-s3://.jgit@git-repos/chef-recipes.git

ऊपर मैं बाल्टी बनाने के लिए s3cmd कमांड लाइन टूल का उपयोग कर रहा हूं, लेकिन आप इसे अमेज़ॅन वेब इंटरफेस के माध्यम से भी कर सकते हैं। अब इसे S3 तक धकेलें (ध्यान दें कि जब भी हम S3 के साथ संभोग करते हैं, तो हम जिट का उपयोग कैसे करते हैं, और मानक git अन्यथा):

jgit push origin master

अब कहीं और जाएं (जैसे cd / tmp) और इसे क्लोन करने का प्रयास करें:

jgit clone amazon-s3://.jgit@git-repos/chef-recipes.git

जब इसे अपडेट करने का समय आता है (क्योंकि जिट्ज मर्ज या पुल का समर्थन नहीं करता है) आप इसे 2 चरणों में करते हैं:

cd chef-recipes
jgit fetch
git merge origin/master

2 अमेज़ॅन S3 द्वारा समर्थित FUSE- आधारित फ़ाइल सिस्टम का उपयोग करें

  1. अमेज़न S3 खाता प्राप्त करें!

  2. डाउनलोड करें, संकलित करें और इंस्टॉल करें। (देखें इंस्टॉलेशननोट्स)

  3. अपनी सुरक्षा क्रेडेंशियल (एक्सेस कुंजी आईडी और गुप्त एक्सेस कुंजी) को निम्न विधियों में से एक द्वारा निर्दिष्ट करें:

    • passwd_file कमांड लाइन विकल्प का उपयोग करना

    • AWSACCESSKEYID और AWSSECRETACCESSKEY वातावरण चर सेट करना

    • अपने घर निर्देशिका में .passwd-s3fs फ़ाइल का उपयोग करना

    • सिस्टम-वाइड / etc / passwd-s3fs फ़ाइल का उपयोग करना

    • यह करो

/usr/bin/s3fs mybucket /mnt

बस! आपके अमेजन बाल्टी "मायबकेट" की सामग्री अब सुलभ / पढ़ने / लिखने में होनी चाहिए


1
मैंने इन निर्देशों का पालन किया लेकिन The request signature we calculated does not match the signature you provided. Check your key and signing methodजब मैं कोशिश करता हूं तो मुझे एक त्रुटि मिलती है jgit push origin master। किसी भी विचार मैं कैसे कर सकते हैं कि दूर जाना?
जॉन

4
आप सिर्फ गिट का उपयोग क्यों नहीं करेंगे? ऐसा लगता है कि अतिरिक्त काम / सामान के लिए बस एक साधारण रिमोट git रेपो पर सामान ...
cmcculloh

1
मेरा सुझाव है कि इस (असली) उत्तर को अपडेट करने के लिए एक post-receiveहुक के साथ एक कदम आगे जाना चाहिए जो चेक आउट करता है GIT_WORK_TREE। अधिक जानकारी के लिए यहां देखें । मैं इस के साथ काफी अच्छी तरह से काम करने के लिए समाप्त हो गया s3fs। अत्यधिक अनुशंसित और मुझे आरंभ करने में मदद करने के लिए धन्यवाद।
bnjmn

1
@cmculloh अगर आपके पास पहले से ही EC2 उदाहरण नहीं है, तो अधिक परेशानी हो सकती है और लंबी अवधि के लिए सिर्फ एक रेपो का खर्च उठाना पड़ सकता है। इसके अलावा S3 भंडारण डिफ़ॉल्ट रूप से बहुत अधिक टिकाऊ है; EC2 पर समान स्थायित्व पाने के लिए आपको वैसे भी S3 तक स्नैपशॉट का बैकअप लेना होगा
जेरेमी

1
ऐसा लगता है कि ब्लॉग पोस्ट को Jit Project पेज को egit [eclipse.org/egit/ ] प्रोजेक्ट के रिपॉजिटरी से लिंक करने के लिए अपडेट किया गया है और यह संपूर्ण समाधान 1 को बनाने के लिए भ्रमित करता है। थोड़ी खोज के बाद मुझे मूल जिटज प्रोजेक्ट पेज मिल गया जहाँ से jgit.sh डाउनलोड और उपयोग किया जा सकता है। यह लिंक किसी के लिए भी eclipse.org/jgit/download है जिसे भविष्य में इसकी आवश्यकता हो सकती है।
एमएन इस्लाम शिहान

9

Dandelion एक अन्य CLI उपकरण है जो S3 / FTP / SFTP के साथ Git रिपॉजिटरी रखेगा: http://github.com/scttnlsn/dandelion


पता नहीं किसने इसे डाउनवोट किया। मुझे लगता है कि यह समाधान अच्छा है यदि लक्ष्य स्थानीय संस्करण प्रबंधन के लिए वृद्धिशील deploys साथ है और होस्टिंग के लिए S3 है। यही प्रश्न प्रतीत होता है।
तबरेज़

8

git-s3 - https://github.com/schickling/git-s3

आपको बस दौड़ना है git-s3 deploy

यह git repo के सभी लाभों के साथ आता है और आपके द्वारा परिवर्तित की गई फ़ाइलों को अपलोड / हटाता है।
नोट: डेप्लिट्स को गिट पुश के माध्यम से निहित नहीं किया गया है, लेकिन आप इसे गिट हुक के माध्यम से प्राप्त कर सकते हैं।


14
FYI करें, यह निर्भर करता है Composer, जो बदले में निर्भर करता है PHP
मार्टन

3

आप mc aka Minio ग्राहक का उपयोग कर सकते हैं , जो कि गोलांग में लिखा है और ओपन सोर्स अपाचे लाइसेंस के तहत उपलब्ध है। यह Mac, Linux, Windows, FreeBsd के लिए उपलब्ध है। आप mc mirrorअपनी आवश्यकता को प्राप्त करने के लिए कमांड का उपयोग कर सकते हैं ।

mc GNU / लिनक्स डाउनलोड

64-bit Intel from https://dl.minio.io/client/mc/release/linux-amd64/mc
32-bit Intel from https://dl.minio.io/client/mc/release/linux-386/mc
32-bit ARM from https://dl.minio.io/client/mc/release/linux-arm/mc
$ chmod +x mc
$ ./mc --help

Amazon S3 के लिए mc कॉन्फ़िगर करना

$ mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
  • अपनी पहुंच / गुप्त कुंजी से बदलें
  • डिफ़ॉल्ट mc द्वारा amazon S3 के हस्ताक्षर संस्करण 4 का उपयोग किया जाता है।
  • mys3 minio क्लाइंट के लिए Amazon S3 उर्फ ​​है

अपने गिथब स्थानीय रिपोजिटरी / डायरेक्टरी को आईना कहें, जिसका नामmygithub amazon S3 बकेट नाम हैmygithubbkp

$ ./mc mirror mygithub mys3/mygithubbkp

आशा है कि यह अस्वीकरण में मदद करता है: मैं मिनियो के लिए काम करता हूं


3

आप इसे एडब्ल्यूएस सीएलआई और गिट (हुक के साथ) का उपयोग करके भी कर सकते हैं। विंडोज 10. पर काम करने वाले सत्यापित लिनक्स / मैक पर काम करना चाहिए।

S3 की ओर से सिंक सेटअप करें

  1. AWS CLI स्थापित करें
  2. सेटअप IAM प्रोग्रामेटिक एक्सेस क्रेडेंशियल्स (आप S3 तक सीमित कर सकते हैं और यहां तक ​​कि सिर्फ बाल्टी तक नीचे)।
  3. क्रेडेंशियल के साथ AWS CLI कॉन्फ़िगर करें
  4. A3 कंसोल में S3 बाल्टी बनाएँ, या CLI पर।
  5. सुनिश्चित करें कि बाल्टी निजी है।
  6. bareअपने मौजूदा git प्रोजेक्ट का नया git रेपो बनाएं :
mkdir myproject.git
cd myproject.git
git init --bare

नोट: नंगे रेपो का उपयोग करना अपस्ट्रीम के रूप में काम करेगा और नंगे रेपो में केवल वही परिवर्तन होंगे जो आप S3 बाल्टी पर अपलोड करना चाहते हैं और अनदेखा नहीं किया गया है, स्थानीय गिट कॉन्फ़िगरेशन, आदि।

  1. इस हुक को नंगे निर्देशिका post-updateमें स्थापित करें । hooksmyproject.git
    #!/bin/sh; C:/Program\ Files/Git/usr/bin/sh.exe
    # Sync the contents of the bare repo to an S3 bucket.
    aws s3 sync . s3://myproject/
    
  2. सही S3 बाल्टी नाम के साथ हुक अपडेट करें।
  3. अब अपनी myprojectनिर्देशिका में सीडी और एक अपस्ट्रीम के रूप में नंगे रेपो को जोड़ें, इसे s3उदाहरण के लिए नाम दें :
git remote add s3 path/to/bare/directory/myproject.git 

नोट: आप नंगे निर्देशिका पथ के लिए एक सापेक्ष पथ का उपयोग कर सकते हैं।

परिक्षण

  1. अपने रेपो और कमिटमेंट में बदलाव जोड़ें।
  2. s3जब आप अपने S3 बाल्टी में परिवर्तन सिंक करना चाहते हैं तो अपने परिवर्तनों को ऊपर की ओर धकेलें ।
  3. आपके द्वारा निर्दिष्ट S3 बाल्टी में परिवर्तन को देखना चाहिए, आप काम की गई सभी चीज़ों को सत्यापित करने के लिए S3 बाल्टी में परिवर्तन भी देख सकते हैं।

संदर्भ:


यदि आपके पास पहले से ही AWS CLI और Git पहले से स्थापित है तो यह ठीक है। यह हुक के ज्ञान ज्ञान को मानता है, कि आप जानते हैं कि IAM उपयोगकर्ताओं और प्रोग्रामेटिक क्रेडेंशियल्स को कैसे सेटअप करें और S3 बाल्टियाँ बनाएं।
b01

तो क्या मैं सही ढंग से समझता हूं कि इसके दो रिपोज स्थानीय हैं और नंगे स्थानीय रेपो स्वयं को अपडेट के बाद s3 में सिंक करने के लिए सेटअप हैं?
योशिय्याह

@ जोशियाह हां, यह सही है। जबकि यह आवश्यक नहीं है, यह S3 में केवल उन फ़ाइलों को सिंक करने में मदद करता है जो आप चाहते हैं, क्योंकि नंगे रेपो में केवल वे फ़ाइलें होंगी जो प्रतिबद्ध हैं। मैंने नंगे रेपो के बिना यह कोशिश की, लेकिन फिर मुझे कुछ फाइलों को सिंकिंग से एस 3 तक बाहर करना पड़ा, कुछ भी नहीं।
b01

1

आप डिप्लिटबोट ( http://deploybot.com/ ) सेवा का उपयोग कर सकते हैं जो एकल गिट रिपॉजिटरी के लिए मुफ्त है।

आप परिनियोजन मोड अनुभाग में "स्वचालित" चुनकर परिनियोजन को स्वचालित कर सकते हैं।

मैं अभी इसका उपयोग कर रहा हूं। यह बहुत आसान और उपयोगी है।


अब फ्री नहीं है।
mxcl

-1

संस्करण Github के साथ आपकी फ़ाइलों को नियंत्रित करता है? यह स्क्रिप्ट (और इससे जुड़े GitHub / AWS कॉन्फ़िगरेशन) आपके रेपो में नए कमिट्स लेगा और उन्हें आपके S3 बकेट में सिंक करेगा।

https://github.com/nytlabs/github-s3-deploy


-1

इसके लिए आपको JGit की जरूरत है।

बस aj क्रेडेंशियल के साथ उपयोगकर्ता निर्देशिका में .jgit फ़ाइल सहेजें और आप s3 के साथ git का उपयोग कर सकते हैं।

यहाँ आपका git url कैसा दिखेगा।

amazon-s3://.jgit@mybucket/myproject.git

आप वह सब कुछ कर सकते हैं जो आप के साथ gitकरते हैं jgit

पूर्ण सेटअप गाइड यहां प्राप्त करें।

https://metamug.com/article/jgit-host-git-repository-on-s3.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.