2012-04-19 19 views
18

ट्रेविस-सीआई सफलता के निर्माण के बाद एक हेरोकू रेल ऐप को तैनात करने का कोई तरीका है?ट्रैविस-सीआई से उसकेोकू पर रेल ऐप कैसे तैनात करें?

+0

मैं बस एक बार देख लिया और आप Heroku मणि स्थापित करने के लिए, और फिर on_sucess लॉगिन करने के लिए एक और स्क्रिप्ट है और Git कर एक स्क्रिप्ट बना सकते हैं लगता है Heroku मास्टर धक्का। इस पर ब्योरा नहीं है, और मुझे लगता है कि यह संभव है –

+1

हाँ! लेकिन ट्रैविस-सीआई पर एसएसएच कुंजी कैसे संभालती है? – danielgatis

+1

मुझे लगता है कि नीचे दिए गए उत्तरों में से एक स्वीकार्य है, @danielgatis। मैंने अपने निरंतर तैनाती के लिए @ ओडीआई और @ मैरियस बुटुक के दोनों जवाबों में जानकारी का उपयोग किया। मैं यहां संदर्भ के लिए जोड़ दूंगा क्योंकि मैं उन रत्नों का उपयोग करता हूं जिनके लिए मुझे ** application.rb ** में 'config.assets.initialize_on_precompile = true' सेट करने की आवश्यकता होती है, मुझे आमतौर पर हेरोोक में मैन्युअल परिनियोजन करने से पहले अपनी संपत्ति का प्रीकंपाइल करना पड़ता था। '$ Heroku labs चलाने के बाद: उपयोगकर्ता-env-compile -a YOUR_HEROKU_APP' सक्षम करें, मुझे अपने **। Travis.yml ** में 'रेक संपत्तियों: प्रीकंपाइल' चलाने की आवश्यकता नहीं थी। मुझे उम्मीद है कि हेरोोकू इस कार्यक्षमता को बनाए रखेगा। –

उत्तर

0

मैं इस तरह के परिदृश्य के बारे में सोच रहा था, हालांकि मैंने विशेष रूप से हेरोकू को choise के मंच के रूप में नहीं माना था। किसी भी तरह, यह क्या मैं के साथ आया हुआ है:

  1. पुल अनुरोध "विकास" शाखा करने के लिए जाना
  2. ट्रैविस पुल अनुरोध का परीक्षण के लिए आप
  3. अगर हम के बारे में क्या में वर्तमान में तैनात करने के लिए कर रहे हैं "विकसित" - मानव खींच अनुरोध, समीक्षा और विलय कि "रिलीज/उम्मीदवार" शाखा
  4. ट्रैविस में परीक्षण फिर से एक बार उस पर एक बार परीक्षण
  5. विलय कर दिया शाखा पारित हुई - "रिलीज/उत्पादन" (संभवतः वास्तविक पुल अनुरोध फ़ॉर्म ट्रैविस बनाने के लिए गिटहब एपीआई के लिए एक रैपर लिखें) को खींचने के लिए ट्रेविस प्राप्त करें।
  6. है कि क्या हम वास्तव में या तैनात करने के लिए चाहते हैं काफी अभी तक नहीं पर निर्भर करता है - एक मानव का आपस में विलय ("रिलीज/उत्पादन" में) या ट्रैविस
  7. से
  8. बनाया पुल अनुरोध बंद कर देता है या तो एक deployer मेजबान या में से प्रत्येक के लिए है "रिलीज/उत्पादन" शाखा को ट्रैक करने के लिए ऐप होस्ट (यदि आपके पास बहुत से हैं और एसपीएफ़ नहीं चाहते हैं)।

मुझे यकीन है कि आप एक हेरोकू ऐप को कार्यान्वित कर सकते हैं जो नियोक्ता होस्ट या कुछ और पागल होने की भूमिका को संभालेगा।

इसके अलावा, आप ट्रैविस को आईआरसी के माध्यम से आपको सूचित करने की कोशिश कर सकते हैं और आपके क्लाइंट पक्ष पर एक और आईआरसी बॉट है जो आपके पास व्यक्तिगत एसएसएच कुंजी तक पहुंच जाएगा और हेरोकू को धक्का देगा, आप एक पुष्टिकरण इंटरफ़ेस भी कार्यान्वित कर सकते हैं के साथ अपने स्वयं के बॉट या लिखित जीयूआई इंटरफ़ेस के साथ निजी बातचीत करने के माध्यम से "आगे बढ़ें!" बटन। यदि आप इतने पुराने स्कूल नहीं हैं, तो आप उस उद्देश्य के लिए हबोट का उपयोग कर सकते हैं।

वैसे, आप कुछ प्रकार की स्टेजिंग शाखा या जो भी आप उपरोक्त चरणों में से कुछ के बीच पसंद करते हैं, भी पेश कर सकते हैं। आपको शायद टैग का उपयोग करना चाहिए और रोलबैक सिर्फ "रिलीज/प्रोडक्शन" में एक ज्ञात काम करने वाले टैग को दबाएगा, जहां से इसे आपके नियोक्ता स्क्रिप्ट द्वारा उठाया जाएगा।

5

मैंने अभी इस मामले को मेरे आवेदन के साथ लागू किया है। यह वास्तव में ऐसा करने के लिए मुश्किल नहीं है, लेकिन यह कुछ चरणों की आवश्यकता है:

  1. आप your heroku API key
  2. जरूरत this gist for an example .travis.yml and get the travis_deployer.rb script
  3. तो ट्रैविस मणि स्थापित देखें, answer to another question on how to secure your API key देखते हैं।
    • यदि आपको इसकी परवाह नहीं है, तो उपरोक्त सारांश से उदाहरण का उपयोग करें।
    • भागो travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
    • कॉपी अपने .travis.yml env में में परिणाम -> वैश्विक अनुभाग

travis_deployer.rb फ़ाइल ssh कुंजी और Heroku के लिए दूरदराज के शाखा का ख्याल रखता है।

आप इन सभी चरणों आप .travis.yml ऐसा दिख सकता है प्रदर्शन किया गया है:

env: 
    global: 
    - secure: "1u21hjnmHjkghduUIJhhs76saljlkajdlfhGhgdJgfaVtgasfLLmNBnb87dad=" 

after_success: 
    - gem install heroku 
    - yes | ruby travis_deployer.rb 
    - heroku keys:clear 
    - yes | heroku keys:add 
    - git push heroku master 
+0

आपको 'after_script' को 'after_success' में बदलना चाहिए या टूटा हुआ कोड तैनाती करना चाहिए। – Ivan

+0

@ इवान: अच्छा बिंदु, मैंने तदनुसार अपना जवाब संपादित किया। धन्यवाद! – Odi

+0

मैंने चाबियाँ करने के बजाय इसे छोड़कर समाप्त कर दिया: स्पष्ट मैंने इसे अंत में जोड़ा: '- मैं $ (grep '[^ \] * $' ~/.ssh/id_rsa.pub -o) में; Heroku कुंजी करें: $ i हटाएं; किया गया जिसे केवल नई अतिरिक्त कुंजी को हटा देना चाहिए और कुछ भी नहीं। मतलब यह है कि यदि आप स्थानीय खाते के लिए इस खाते का उपयोग करते हैं तो आपको हर तैनाती के लिए कुंजी जोड़ने की आवश्यकता नहीं है। – Ryan

2

यहाँ एक संस्करण मैं Mark Bates' blog पर पाया जाता है। यह ओडी के समान है, बस यह आपके .travis.yml फ़ाइल में after_script पर निर्भर करता है।

  1. सबसे पहले, encrypt environment variables तो अपने गुप्त API कुंजियां सुरक्षित रहना करने के लिए ट्रैविस 'सुविधा का उपयोग:

    env: 
        global: 
        - secure: YOUR_SECURED_HEROKU_API_KEY 
    after_script: 
        # Install the Heroku gem (or the Heroku toolbelt) 
        - gem install heroku 
        # Add your Heroku git repo: 
        - git remote add heroku [email protected]:YOUR_HEROKU_APP.git 
        # Turn off warnings about SSH keys: 
        - echo "Host heroku.com" >> ~/.ssh/config 
        - echo " StrictHostKeyChecking no" >> ~/.ssh/config 
        - echo " CheckHostIP no" >> ~/.ssh/config 
        - echo " UserKnownHostsFile=/dev/null" >> ~/.ssh/config 
        # Clear your current Heroku SSH keys: 
        - heroku keys:clear 
        # Add a new SSH key to Heroku 
        - yes | heroku keys:add 
        # Push to Heroku! 
        - yes | git push heroku master 
    
  2. :

    gem install travis 
    travis encrypt username/repository HEROKU_API_KEY=YOUR_HEROKU_API_KEY 
    
  3. फिर अपने .travis.yml फ़ाइल में निम्न संलग्न और आप कर चुके हैं: अपने नए बदलाव करें और ट्रैविससीआई के माध्यम से हरोकू में तैनाती का आनंद लें।


संपादित करें: आप travis encrypt, this might be your solution पर किसी भी त्रुटि मिल हैं।

+0

मेरे निर्माण के लिए मैं क्या कर सकता हूं इसकी आपूर्ति करने के लिए मैं क्या कर सकता हूं? जब ट्रैविस मेरे '.travis पार्स।yml' और heroku कुंजी पर जाता है: स्पष्ट, मैं कोड का पालन करने के लिए देखता हूं और मुझे नहीं पता कि ईमेल 'heroku-cli: सीएलआई स्थापित करना ... 22.44 एमबी/22.44 एमबी अपने हेरोोक प्रमाण-पत्र दर्ज करें। ईमेल: ' –

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