2013-08-02 8 views
24

विफल रहा है मैं अपनी gh-branch को प्रतिबद्ध करने के लिए grunt-gh-pages एक्सटेंशन का उपयोग करने का प्रयास कर रहा हूं। यह स्थानीय रूप से ठीक काम करता है लेकिन जब मैं ट्रैविस-सीआई का उपयोग करता हूं तो यह विफल हो जाता है। यह निम्न त्रुटि संदेश देता है -ट्रेविस सीआई के माध्यम से प्रतिबद्ध

Warning: fatal: remote error: 
    You can't push to git://github.com/tusharmath/tusharm.com.git 
    Use https://github.com/tusharmath/tusharm.com.git 
Use --force to continue. 

और जब मैं रेपो विकल्प मैं निम्नलिखित त्रुटि मिलती है अद्यतन -

Warning: remote: Anonymous access to tusharmath/tusharm.com.git denied. 
fatal: Authentication failed for 'https://github.com/tusharmath/tusharm.com.git/' 
Use --force to continue. 
Aborted due to warnings. 

तो बुनियादी तौर पर मैं सिर्फ ट्रैविस-ci gh- में फ़ाइलों को प्रतिबद्ध करने के लिए चाहते हैं मेरे रेपो की पेज शाखा। क्या ऐसा करने के लिए कोई रास्ता है?

अद्यतन अंतिम .travis.yml कि समस्या

language: node_js 
node_js: 
    - '0.11' 
before_script: 
    - git config --global user.email "[email protected]" 
    - git config --global user.name "Travis-CI" 
after_script: 
    - git config credential.helper "store --file=.git/credentials" 
    - echo "https://${GH_TOKEN}:@github.com" > .git/credentials 
    - node ./node_modules/grunt-cli/bin/grunt release 
env: 
    global: 
    secure: {"lots-of-seemingly-random-characters"} 

उत्तर

36

आप निश्चित रूप से कर सकते हैं हल! आपके द्वारा खोजे गए पहले अंक को git:// यूआरएल का उपयोग करने के लिए यूआरएल का उपयोग करने के कारण है, लेकिन गिट प्रोटोकॉल का उपयोग केवल भंडार क्लोन करने के लिए किया जा सकता है।

"अज्ञात पहुंच से वंचित" त्रुटि के लिए, ऐसा इसलिए है क्योंकि आपको रेस्पॉजिटरी को धक्का देने के लिए ट्रैविस को अपने गिटहब खाते में लॉग इन करने की आवश्यकता है। अब, शायद आप ट्रैविस को अपने गिटहब पासवर्ड नहीं देना चाहते हैं, और आपको निश्चित रूप से नहीं करना है। इसके बजाय हम ओथ टोकन का उपयोग करने जा रहे हैं। यदि आपको पता नहीं है कि इसका क्या अर्थ है, तो चिंता न करें, मैं समझाऊंगा। अधिकांश मामलों में एक ओथ टोकन पासवर्ड की तरह काम करता है, लेकिन एकल चीजों तक पहुंच रद्द करना आसान है।

ओएथ टोकन जेनरेट करने के लिए, GitHub Applications settings page पर जाएं और "व्यक्तिगत API एक्सेस टोकन" के अंतर्गत "नया टोकन बनाएं" पर क्लिक करें। आप शायद इस बात के लिए एक नोट जोड़ना चाहते हैं कि यह क्या है, इस तरह यदि आपको भविष्य में आवश्यकता हो तो इसे ट्रैक करना आसान और रद्द करना आसान है। ध्यान दें कि यह टोकन अनिवार्य रूप से एक पासवर्ड है जिसमें यह एक ही चीजों को पासवर्ड देता है।

फिर, आपको अपनी .travis.yml फ़ाइल में टोकन जोड़ने की आवश्यकता है। सबसे पहले, हम टोकन को एन्क्रिप्ट करेंगे ताकि ट्रैविस इसे देख सके। इसके लिए, आपको travis रूबीगम स्थापित करने की आवश्यकता है: gem install travis

travis encrypt GH_TOKEN="the-token-from-github" --add 

आपका .travis.yml अब कुछ इस तरह दिखना चाहिए:

… 
env: 
    global: 
    - secure: "lots-of-seemingly-random-characters" 
… 

अब, आदेश के लिए ट्रैविस वास्तव में इस टोकन का उपयोग करने के लिए, आप अपने .travis के लिए कुछ और बातें जोड़ने की जरूरत है। yml भी।

after_script: 
    - git config credential.helper "store --file=.git/credentials" 
    - echo "https://${GH_TOKEN}:@github.com" > .git/credentials 
    - node ./node_modules/grunt-cli/bin/grunt release 

यह पहली Git .git/credentials फ़ाइल में क्रेडेंशियल के लिए देखने के लिए कहता है। यह वास्तव में कोई भी फ़ाइल हो सकती है, लेकिन सुनिश्चित करें कि यह वह नहीं है जिसे आप गिटहब पर धक्का दे रहे हैं। फिर, हम टोकन को .git/credentials फ़ाइल में जोड़ते हैं। गिट अब जानता है कि https://github.com पर धक्का देने के लिए, यह प्रमाणित करने के लिए आपके टोकन का उपयोग कर सकता है।

आपको सभी सेट होना चाहिए!

पुनश्च: आप केवल GitHub के लिए पुश करने के लिए चाहते हैं, तो निर्माण से गुजरता है, आप after_success को after_script बदल सकते हैं।

+0

मैं अपने अनुमान है क्योंकि मैं काफी credential.helper के उपयोग को समझने din't:

फिर अपने after_script या after_success खंड की तरह संशोधित किया जा सकता। – Tushar

+0

आप यहां पूर्ण बिल्ड लॉग देख सकते हैं https://travis-ci.org/tusharmath/tusharmath.github.io/builds/9803395 – Tushar

+0

त्रुटि संदेश क्या गुम है इसके बारे में स्पष्ट है। क्या आपने अपने '.travis.yml' में 'गिट कॉन्फ़िगरेशन' कॉल में' --global' जोड़ने का प्रयास किया है? – henrikhodne

6

henrikhodne का उत्तर बहुत अच्छा है, लेकिन समाधान grunt-gh-pages के साथ काम नहीं करता है क्योंकि यह .grunt/grunt-gh-pages/ उप-निर्देशिका में कहीं और गिट भंडार बनाता है।इसलिए git configafter_script या after_success अनुभाग में बने grunt-gh-pages द्वारा उपयोग नहीं किया जाता है। यह ट्रैविस लॉग में अपने टोकन मान प्रकाशन को रोकती है

'gh-pages': { 
    // your common gh-pages config 
    travis: { 
     options: { 
      repo: 'https://' + process.env.GH_TOKEN + '@github.com/dim2man/csbrowser.git', 
      silent: true 
     }, 
     src: ['**'] 
    } 
} 

नोट silent: true विकल्प,:

यह भंडार इस तरह Gruntfile.js में घुरघुराना-gh-पृष्ठों द्वारा उपयोग यूआरएल के लिए GH_TOKEN जोड़ना संभव नहीं है।

after_success: grunt gh-pages:travis 
+1

'gulp-gh-pages' प्लगइन के साथ ही - https://github.com/kriasoft/static-site-starter/blob/d1465463e324b6628cb6165d88ae38fb9c2a0dd9/gulpfile.js#L190 –

संबंधित मुद्दे