Tôi muốn có thể đẩy mã để dev.myapp.com
thử nghiệm và sau đó để www.myapp.com
sử dụng trong sản xuất. Điều này có khả thi với Heroku không?
Tôi muốn có thể đẩy mã để dev.myapp.com
thử nghiệm và sau đó để www.myapp.com
sử dụng trong sản xuất. Điều này có khả thi với Heroku không?
Câu trả lời:
Giao diện của bạn với Heroku về cơ bản là một nhánh Git. Đá quý Heroku thực hiện một số hoạt động thông qua API của chúng, nhưng trong kho lưu trữ Git của bạn, nó chỉ là một nhánh từ xa mới.
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
Sau khi thiết lập nhiều ứng dụng trên Heroku, bạn sẽ có thể định cấu hình kho lưu trữ Git của mình như sau:
git remote add staging git@heroku.com:staging-yourapp.git
git push origin staging
git remote add production git@heroku.com:yourapp.git
git push origin production
Tôi thường làm việc trong một chi nhánh 'đang làm việc' và sử dụng Github cho chủ của tôi.
Giả sử đó là trường hợp của bạn, quy trình triển khai của bạn có thể trông giống như sau:
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production
heroku create yourapp --remote your-remote
heroku
lệnh của bạn cần phải bao gồm --app staging
hoặc --app production
. Có cách nào để đặt mặc định không? (Yêu cầu như một lời nhận xét b / c này dường như quá nhắm mục tiêu đến là một câu hỏi chính thức SO.)
Điều này giải thích mọi thứ bạn cần biết nếu một người mới của bạn như tôi: http://devcenter.heroku.com/articles/multiple-enosystem
Phần quan trọng của câu hỏi ban đầu là về việc liên kết ứng dụng dàn dựng với miền phụ (dev.myapp.com) của ứng dụng chính (www.myapp.com). Điều này chưa được đề cập trong bất kỳ câu trả lời nào.
Bước 1: Định cấu hình cả phiên bản sản xuất ('myapp') và phiên bản dàn dựng ('staging-myapp') của ứng dụng của bạn như được chỉ ra trong câu trả lời của Luke Bayes
Bước 2: Trong hệ thống quản lý miền của bạn (ví dụ: GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Bước 3: Định cấu hình Heroku để định tuyến dev.myapp.com đến staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
Sau khi bản ghi CNAME có thời gian phổ biến, bạn sẽ có thể chạy ứng dụng dàn dựng của mình tại dev.myapp.com.
before_filter
hook vào của mình application_controller
để nắm bắt MỌI THỨ trong quá trình dàn dựng và buộc người dùng đăng nhập với tư cách quản trị viên, sau đó đặt cookie quản trị để tôi vẫn có thể xem ứng dụng từ quan điểm của một 'người không phải quản trị viên'. Làm việc khá tốt cho tôi.
Bạn nên kiểm tra heroku_san
Nó hoạt động khá tốt khi tung hứng với các môi trường trên heroku.
Mọi thứ dễ dàng hơn bây giờ. Đây là cách bạn làm điều đó ...
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Thao tác này sẽ tạo các kho lưu trữ từ xa được đặt tên cho từng ứng dụng mà bạn có thể thấy trong đó .git/config
.
Giờ đây, bạn có thể sử dụng các công tắc --app hoặc --remote để nhắm mục tiêu một ứng dụng cụ thể:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Đối với các ứng dụng Rails, Heroku mặc định là môi trường "sản xuất" . Nếu bạn muốn ứng dụng dàn của mình chạy trong môi trường dàn, hãy tạo môi trường trong dự án của bạn và đặt các biến môi trường RAILS_ENV và RAKE_ENV tương ứng trên ứng dụng:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Nếu bạn có các biến cấu hình khác, bạn cũng cần phải chuyển chúng vào cho từng môi trường.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
Đó là một nỗi đau lớn, vì vậy tôi chỉ sử dụng đá quý snappconfig của mình và chạy
$ rake heroku:config:load[myapp-staging]
để tải các tệp cấu hình YAML của dự án của tôi vào Heroku.
Bây giờ bạn chỉ cần đẩy đến Heroku như thế này:
$ git push staging master
$ git push production master
và di chuyển như thế này:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(Xem Quản lý nhiều môi trường cho một ứng dụng | Trung tâm nhà phát triển Heroku để biết thêm thông tin và các phím tắt.)
RAILS_ENV
và RACK_ENV
để staging
không được khuyến khích bởi Heroku: "Nó có thể được hấp dẫn để tạo ra một môi trường tùy chỉnh như‘dàn’và tạo một config / môi trường / staging.rb và triển khai một ứng dụng với RAILS_ENV = dàn Heroku Đây không phải là một thói quen tốt. . Thay vào đó, chúng tôi khuyên bạn nên luôn chạy ở chế độ sản xuất và sửa đổi bất kỳ hành vi nào bằng cách đặt các vars cấu hình của bạn. " Thông tin thêm về điều này tại đây: devcenter.heroku.com/articles/…
git push staging edge work
?