2012-04-19 43 views
18

Có cách nào để triển khai ứng dụng đường ray heroku sau khi xây dựng thành công travis-ci không?Làm thế nào để triển khai một ứng dụng đường ray trên heroku từ travis-ci?

+0

Tôi chỉ cần lấy một cái nhìn và có vẻ như bạn có thể làm cho một kịch bản để cài đặt Heroku đá quý, và sau đó có một kịch bản khác để đăng nhập on_sucess và làm git đẩy tổng thể Heroku. Các chi tiết về điều này không có ý tưởng, và tôi chỉ giả sử nó có thể –

+1

yep! nhưng làm thế nào xử lý các khóa ssh trên travis-ci? – danielgatis

+1

Tôi nghĩ rằng một trong những câu trả lời dưới đây xứng đáng được chấp nhận, @danielgatis. Tôi đã sử dụng thông tin trong cả hai câu trả lời của @Odi và @Marius Butuc để triển khai liên tục. Tôi sẽ thêm tham chiếu ở đây là vì tôi sử dụng đá quý yêu cầu tôi đặt 'config.assets.initialize_on_precompile = true' trong ** application.rb **, tôi thường phải biên dịch trước tài sản của mình trước khi thực hiện triển khai thủ công cho Heroku. Sau khi chạy các lab '$ heroku: bật user-env-compile -a YOUR_HEROKU_APP', tôi không cần chạy' rake assets: precompile' trong **. Travis.yml ** của tôi. Tôi chỉ hy vọng Heroku giữ chức năng này. –

Trả lời

0

Tôi vừa mới suy nghĩ về loại kịch bản này, mặc dù tôi không xem xét cụ thể Heroku làm nền tảng choise. Nhưng dù sao, đây là những gì tôi đã đi lên với:

  1. yêu cầu Kéo đi đến "phát triển" chi nhánh
  2. Travis kiểm tra theo yêu cầu kéo cho bạn
  3. Nếu chúng ta muốn triển khai những gì hiện tại "phát triển" - con người kéo theo yêu cầu, xem xét và kết hợp đó vào "phát hành/ứng cử viên" chi nhánh
  4. Travis xét nghiệm lại một lần sáp nhập
  5. Khi thử nghiệm trên đó Nhánh được chuyển - nhận Travis để tạo yêu cầu kéo nhắm mục tiêu "phát hành/sản xuất" (có thể viết trình bao bọc cho GitHub API để tạo biểu mẫu yêu cầu kéo thực tế Travis).
  6. Tùy thuộc vào việc chúng ta thực sự muốn triển khai hay không khá được nêu ra - một hòa trộn con người (vào "phát hành/sản xuất") hoặc đóng theo yêu cầu kéo được tạo ra từ Travis
  7. Có hoặc một loạt Deployer hoặc có mỗi máy chủ ứng dụng (nếu bạn có nhiều và không muốn có SPF) để theo dõi chi nhánh phát hành/sản xuất "".

Tôi chắc chắn bạn có thể triển khai ứng dụng Heroku sẽ xử lý vai trò của chủ nhà triển khai hoặc điều gì đó thậm chí còn điên rồ hơn.

Ngoài ra, bạn có thể thử Travis để thông báo cho bạn qua IRC và có một bot IRC khác ở phía khách hàng của bạn sẽ có quyền truy cập vào khóa SSH cá nhân và đẩy bạn đến Heroku, bạn cũng có thể thực hiện giao diện xác nhận có bằng cách có một cuộc trò chuyện riêng với bot của riêng bạn hoặc giao diện GUI theo kịch bản với một số "Tiếp tục!". Nếu bạn không phải là trường học cũ, bạn có thể sử dụng Hubot cho mục đích đó.

Nhân tiện, bạn cũng có thể giới thiệu một số loại nhánh dàn dựng hoặc bất cứ thứ gì bạn thích ở giữa một số bước trên. Bạn có thể cũng nên sử dụng thẻ và rollback sẽ chỉ đẩy một thẻ biết làm việc vào "phát hành/sản xuất" từ nơi nó sẽ được chọn bởi kịch bản triển khai của bạn.

5

Tôi vừa mới triển khai trường hợp này với đơn đăng ký của tôi. Nó thực sự không phải là khó để làm, nhưng nó đòi hỏi một số bước sau:

  1. Bạn cần your heroku API key
  2. Xem this gist for an example .travis.yml and get the travis_deployer.rb script
  3. Sau đó cài đặt các viên ngọc travis, xem answer to another question on how to secure your API key.
    • Nếu bạn không quan tâm, hãy sử dụng ví dụ từ gist ở trên.
    • Run travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
    • Sao chép kết quả trong .travis.yml trong env của bạn -> phần toàn cầu

File travis_deployer.rb sẽ chăm sóc của các phím ssh và chi nhánh từ xa cho Heroku.

Nếu bạn đã thực hiện tất cả các bước bạn .travis.yml có thể trông như thế này:

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

Bạn nên thay đổi 'after_script' thành' after_success' hoặc mã triển khai rủi ro bị hỏng. – Ivan

+0

@Ivan: Tốt, tôi đã chỉnh sửa câu trả lời của tôi cho phù hợp. Cám ơn! – Odi

+0

Tôi đã kết thúc bằng cách sử dụng này ngoại trừ thay vì làm một chìa khóa: rõ ràng tôi đã thêm điều này vào cuối: '- cho tôi bằng $ (grep '[^ \] * $' ~/.ssh/id_rsa.pub -o); thực hiện các phím heroku: xóa $ i; được thực hiện' Chỉ cần xóa khóa vừa được thêm và không có gì khác. Có nghĩa là nếu bạn sử dụng tài khoản này để phát triển cục bộ, bạn không phải tiếp tục thêm khóa cho mỗi lần triển khai. – Ryan

2

Đây là một phiên bản tôi tìm thấy trên Mark Bates' blog. Nó tương tự như của Odi, chỉ là nó dựa trên các after_script trong tập tin .travis.yml của bạn một mình.

  1. Trước hết, sử dụng tính năng Travis' để encrypt environment variables để các phím API bí mật của bạn vẫn được bảo vệ:

    gem install travis 
    travis encrypt username/repository HEROKU_API_KEY=YOUR_HEROKU_API_KEY 
    
  2. Sau đó, thêm dòng sau vào .travis.yml tập tin của bạn:

    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 
    
  3. Và bạn đã hoàn thành: cam kết những thay đổi mới của bạn và tận hưởng việc triển khai Heroku thông qua TravisCI.


Edit: Nếu bạn nhận được bất kỳ lỗi trên travis encrypt, this might be your solution.

+0

Tôi có thể làm gì để xây dựng của mình để cung cấp những gì nó yêu cầu? khi Travis phân tích cú pháp '.travis của tôi.yml' và được các phím heroku: rõ ràng, tôi thấy mã sau và tôi không biết cách cung cấp email 'heroku-cli: Cài đặt CLI ... 22.44MB/22.44MB Nhập thông tin Heroku của bạn. Email: ' –

Các vấn đề liên quan