2013-10-13 6 views
19

मेरे पास वर्तमान में दो वातावरण हैं जिनमें मैं काम करता हूं: development स्थानीय रूप से और production हेरोोकू पर।वर्कफ़्लो में एक स्टेजिंग वातावरण जोड़ना

मैं हेरोोकू पर staging पर्यावरण जोड़ना चाहता हूं ताकि यह देखने के लिए कि ऐप को उपयोगकर्ताओं को लाइव करने से पहले सबकुछ अपेक्षित हो। पसंदीदा रूप से, staging पर्यावरण में production पर्यावरण के समान सटीक सेटिंग और डेटा होना चाहिए।

उपरोक्त को पूरा करने के लिए आवश्यक कदम क्या हैं?

उत्तर

34

सबसे पहले पूर्वाग्रह, मुझे अपने हेरोकू गिट रिमोट्स को स्टेजिंग और उत्पादन के रूप में स्थापित करना पसंद है ताकि आप उनमें से प्रत्येक को तैनात करने के लिए आसानी से गिट पुश स्टेजिंग/उत्पादन का उपयोग कर सकें। मैं स्टेजिंग एनवी बनाने के तरीके को समझाने के लिए उस सेटअप का उपयोग करूँगा।

  1. बनाने एक config/environments/staging.rb जो आप बंद `config/वातावरण/production.rb 'की प्रतिलिपि बनाएगा
  2. मचान डेटाबेस के लिए एक database.yml प्रविष्टि जोड़ने (वास्तव में Heroku के लिए आवश्यक नहीं है, लेकिन चोट नहीं कर सकते हैं)
  3. बैकअप अपने .env फ़ाइल (आप इसे किया है)
  4. Heroku-config प्लग-इन इंस्टॉल heroku plugins:install git://github.com/ddollar/heroku-config.git
  5. द्वारा heroku config:pull --remote production
  6. साथ Heroku (उत्पादन सर्वर) से अपने वातावरण सेटिंग्स खींच चांग कर .env फ़ाइल में es और इन मानों को कॉन्फ़िगरेशन में जोड़ने के लिए मत भूलना: RACK_ENV=staging RAILS_ENV=staging ताकि यह स्टेजिंग वातावरण कॉन्फ़िगरेशन का उपयोग करेगा।
  7. कांटा heroku fork -a production staging के साथ एक Heroku पर्यावरण एक `Heroku config करो
  8. (उन Heroku appnames आप उत्पादन/स्थिति निर्धारण के बजाय चाहते हैं): --remote मचान '
  9. env ठीक से मंचन करने के लिए कोड को तैनात करना न भूलें धक्का

तुम भी इस ट्यूटोरियल पढ़ सकते हैं, मुझे लगता है कि मैं इसे Heroku पर कई envs के साथ आरंभ करने के लिए इस्तेमाल किया: https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations

+0

विस्तृत स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। मैंने स्टेजिंग/उत्पादन रिमोट-सेटअप की अवधारणा के आसपास अपना सिर प्राप्त करके शुरू किया, और एक बार जब यह जगह पर था तो मुझे आश्चर्य हुआ कि - उत्पादन/स्टेजिंग वातावरण को अलग करने के वास्तविक लाभ क्या हैं?मेरे पास आमतौर पर दो स्थानीय शाखाएं होती हैं: मास्टर/डेवलपमेंट, और जब विकास को स्टेजिंग रिमोट पर धक्का दिया जाता है और समीक्षा की जाती है, तो मैं विकास -> मास्टर को विलय कर दूंगा और इसे रिमोट उत्पादन में धक्का दूंगा। –

+3

आपके पास उत्पादन उत्पादन में वास्तव में प्रदर्शन करने के तरीके के बारे में यह देखने के लिए आपके उत्पादन env के समान स्टेजिंग एनवी होना चाहिए, और उत्पाद मालिक द्वारा उत्पादन में जाने से पहले सुविधाओं का परीक्षण करने में सक्षम होना चाहिए। ज्यादातर मुद्दे टीडीडी वास्तव में पकड़ नहीं सकते हैं उदाहरण के लिए सीएसएस रिग्रेशंस जिन्हें आप आसानी से छोड़ सकते हैं, या हमेशा बोले हुए संपत्ति नरक कहीं तोड़ सकते हैं। छोटी बात, एक स्टेजिंग एनवी है, उत्पादन के समान कॉन्फ़िगर होना चाहिए, आपके पास सर्वर का एक ही जानवर नहीं होना चाहिए, बस सुनिश्चित करें कि ढेर तैनाती के लिए पूरी तरह से समान है। – berislavbabic

+0

जब मैं heroku कॉन्फ़िगरेशन चलाता हूं: पुल कमांड मुझे 'config: pull' मिलता है एक heroku कमांड नहीं है। मैक के लिए कुछ दिन पहले टूलबल्ट डाउनलोड किया गया: heroku-toolbelt/3.2.1 (x86_64-darwin10.8.0) ruby ​​/ 1.9.3 – jpwynn

8

मैं heroku fork -a PRODUCTION_APP_NAME NEW_STAGE_APP_NAME पाया तेज़, आसान यह करने के लिए जिस तरह से होना करने के लिए ... आईटीसी नया ऐप रीट करता है, सबकुछ कॉपी करता है (पोस्टग्रेज़ डेटाबेस सहित)। फिर जब मैं समझ में आया तो एडॉन्स को छोटी योजनाओं में मैन्युअल रूप से डाउनग्रेड कर दिया गया (उदाहरण के लिए, स्टार्टर स्तरीय डेटाबेस)।

वास्तव में, हमने स्वचालित रूप से प्रबंधित करने के लिए अपेक्षाकृत नए heroku pipeline:promote का उपयोग करना शुरू किया (और बहुत तेज़ी से) एक संकलित स्लग को स्टेजिंग से उत्पादन तक दबाकर। (यह मान लिया गया है कि आप सेटिंग्स या वातावरण चर के माध्यम से किसी भी env-विशिष्ट सेटिंग है, तो कोड स्लग में ही है।)

6

ध्यान दें कि प्रक्रिया berislavbabic से समझाया Heroku की साइट पर निम्न मार्गदर्शिका के अनुसार अनुशंसित नहीं है: https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations

आप वहां विस्तार से पढ़ सकते हैं, लेकिन स्टेजिंग पर्यावरण को उत्पादन वातावरण के समान ही रखना है और उत्पादन से प्रतिलिपि बनाने के लिए केवल उसकीोकू कांटा का उपयोग करना है।

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