Typography

活版印字


  • Home
  • Archive
  • Categories
  • Tags
  •  

© 2020 alincode

Theme Typography by Makito

Proudly published with Hexo

關於自動部署 rollback

Posted at 2016-07-29 rollback 

Release Management
圖片來源 - msdn

關於自動部署後延伸的議題,若部署失敗後的 rollback 處理。

首先必須了解,我們需要 rollback 什麼

  • 還原回舊的程式碼
  • 還原資料庫

還原回舊的程式碼

  • 以 capistrano 為例,每次透過工具執行 release 指令之後,在 releases 資料夾下,就會有當下時間戳記資料夾,工具會更新軟連結 (current) 指向的新的時間戳記的資料夾,以達到可以還原的目的。
  • cap staging deploy:rollback ROLLBACK_RELEASE=20160614133327
  • capistranorb structure

資料庫rollback

  • 資料庫層級的 rollback
    • 使用一些 tool 所寫出來的 migrations script,自動將執行動作包在同一個 transaction,如果中間有一個步驟失敗,會直接做資料庫層級的 rollback。
  • 框架層級的 rollback
    • 但如果 migration script 執行完成後,結果不如預期,基本上不建議做資料庫的資料跟結構 rollback 的,就如何你 push 出的 code 一樣,你如果做 git rebase,將導致其他已經 pull 的人發生衝突,所以功能最好只使用在未 push code 出去之前使用。
    • 例如若你在 migration script 中,新增了一個欄位,當你做 rake db:rollback STEP=1 後,它會自動將新增的欄位移除。
  • 那到底怎麼收拾失敗的殘局?
    • 答案就是在寫一個 migration script 去修正問題

完整範例程式

  • rails migration sandbox
  • sequelize migration sandbox

database migration tools

  • sequelize-cli
  • liquibase
  • flyway
  • ruby migrate

相關文章

  • Usefulness of db migrations rollback
  • Active Record - 資料庫遷移
  • capistranorb rollbacks

Share 

 Previous post: 自動部署三兩事(1) Next post: octotree 在瀏覽器上顯示 code tree 

© 2020 alincode

Theme Typography by Makito

Proudly published with Hexo