2013-10-13 22 views
19

Şu anda çalıştığım iki ortama sahibim: development yerel olarak ve Heroku'da production.İş akışına hazırlama ortamı ekleme

Uygulamayı kullanıcılara yüklemeden önce her şeyin beklendiği gibi gittiğini görmek için Heroku'da bir staging ortamı eklemek istiyorum. Tercihen, staging ortamı, production ortamı ile aynı ayarlara ve verilere sahip olmalıdır.

Yukarıdakileri gerçekleştirmek için gereken adımlar nelerdir?

cevap

34

Öncelikler, benim kahramanku git'in tüm aşamalarına yerleştirmek için git basma aşamasını/üretimini kolayca kullanabilmeniz için aşamalandırma ve üretim olarak ayarlanmış uzaktan kumandaları kullanmasını seviyorum. Evreleme sistemini nasıl yapacağınızı açıklamak için bu kurulumu kullanacağım.

  1. oluşturmak Eğer
  2. evreleme veritabanı için bir database.yml giriş eklemek `config/ortamlar/production.rb' kapalı kopyalar (gerçekten Heroku için gerekli değildir ancak zarar veremezler) bir config/environments/staging.rb
  3. Yedekleme .env dosyası (eğer varsa)
  4. heroku config:pull --remote production
  5. ile Heroku (üretim sunucusu) adresinin ortam ayarlarını çekin heroku plugins:install git://github.com/ddollar/heroku-config.git
  6. tarafından Heroku-config eklentisini yükleyin chang yapmak .env dosyasına gidin ve bu değerleri yapılandırmaya eklemeyi unutmayın: RACK_ENV=staging RAILS_ENV=staging, bu nedenle ortam ortamı yapılandırmasını kullanır.
  7. çatal heroku fork -a production staging ile Heroku ortamı `Heroku yapılandırma Do
  8. (o Heroku yerine üretim/sahneleme istiyorum appnames gösterilmiştir): --Remote evreleme'
  9. düzgün env evreleme için kod dağıtmak için emin olun itmek

Ayrıca bu öğretici okuyabilir, i o Heroku üzerinde birden ENVS başlamak için kullanılan düşünüyorum: https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations

+0

Detaylı açıklama için çok teşekkür ederim. Aşama/üretim uzaktan-kurulum kavramının etrafında kafamı alıp başladım ve bu bir kez gerçekleştiğinde merak etmeye başladım - üretim/evreleme ortamlarını ayırmanın gerçek faydaları neler?Genelde iki yerel şubeye sahip olacağım: master/geliştirme, ve geliştirme aşamalı uzaktan kumanda üzerinde itildikten ve gözden geçirildiğinde, gelişimi birleştiririm -> master ve bunu üretim uzaktan kumandasına yönlendiririm. –

+3

Ürünün üretim ortamında nasıl bir performans sergilediğini görmek ve üretim sürecine başlamadan önce ürün sahiplerinin özellikleri test edebilmesini sağlamak için üretim ortamınızla aynı aşamada olmalıdır. TDD'nin gerçekten yakalayamadığı sorunların çoğu, örneğin kolayca atlayabileceğiniz css regresyonlarıdır ya da her zaman eksik olan varlık cehennemde bir yerlerde kırılabilir. Kısa bir şey, bir evreleme env'iniz var, üretim ile aynı konfigürasyon olmalı, sunucunun aynı canavara sahip olmanıza gerek yok, sadece yığının tamamıyla aynı olduğundan, dağıtımdan emin olun. – berislavbabic

+0

, ben heroku config komutunu çalıştırdığımda: '' config: pull' komutunu alıyorum. mac için toolbelt birkaç gün önce İndirilen: Heroku-toolbelt/sen Heroku-config eklentiyi yüklemek zorunda @jpwynn 3.2.1 (x86_64-darwin10.8.0) yakut/1.9.3 – jpwynn

8

bunu yapmak için daha hızlı, daha kolay bir yol olarak heroku fork -a PRODUCTION_APP_NAME NEW_STAGE_APP_NAME bulundu ... c yeni uygulamayı yeniden düzenler, her şeyi kopyalar (postgres veritabanı dahil). Daha sonra, içeri girdiklerinde (örneğin, başlangıç ​​aşamasındaki bir veritabanı), eklentileri daha küçük planlara el ile düşürdüm ve el ile düşürdüm. Aslında, biz otomatik olarak yönetmek için (ve ÇOK hızla) nispeten yeni heroku pipeline:promote kullanmaya başladık. (Yani kod sümüklüböcek aynıdır, böylece ayarları veya ortam değişkenleri aracılığıyla herhangi env özgü ayarları olduğu kabul edilmiştir.)