2015年3月15日 星期日

GitHub + Shippable + Heroku : A continuous development way

本篇介紹該如何將你在 GitHub 上的專案透過 ShippableHeroku 做有效的結合達成 continuous development

Continuous development 包含了很多的面向,譬如說比較常聽到的 Continuous delivery 或 Continuous deployment 等等。

而等等要介紹的 Shippable 和 Heroku 的運用確實可以達成上述的這些 term

Shippable 是一個強大的平台讓開發者能夠快速的做專案的整合(integrate)與建構(build)

它能夠自動同步你 GitHub 或是 Bitbucket 內的專案來進行建構,方便的是

假如你今天有一個專案在 GitHub 上,並且你也同步到了 Shippable

之後你如果有任何的程式提交 (commit) 到 GitHub 上,Shippable 都會自動的進行建構的動作

讓開發者能夠達到持續地提交,建構與測試。當然這個過程是開發者需要提供一些設定檔才能達成的

而 Shippable 更提供了幾個主流開發語言的環境,包括 Node.js, Java, Ruby, Scala, Python 等等

而 Heroku 則是一個 PaaS,它提供了很多種語言的 deploy (部署)與運行環境

簡單來說就是它能夠讓你部屬你的專案到 Heroku 的 Cloud 上,並透過它給你的 domain 進行結果的瀏覽

在進行接下來的教學前你需要有 GitHub 的帳號,並且在 GitHub 上有一些專案可以運用

所以 GitHub 的操作就不多說了,直接從 Shippable 開始


建立 Shippable 與 GitHub 間的連結

先進入到 Shippable 的首頁 https://www.shippable.com/ 並按下中間 GitHub 的按鈕

接下來會進行一些 GitHub 的權限認證,做完之後就會看到 Shippable 的 dashboard

中間是你目前開啟 Shippable 與 GitHub 同步的專案,右邊會是你 GitHub 上的所有專案



















建立 Heroku 帳號與應用(Application)

接下來建立 Heroku 的帳號就不多說了,很簡單,就直接從建立帳號後開始說起

帳號建立完成後你應該會看到類似下方的圖











接下來你可以透過按下右上方角落的來建立一個App,建立過程很簡單,你只要輸入名稱就好

你甚至不輸入也沒關係,它會自動幫你建立一個名子。

設定 SSH key
回到剛剛的 Shippable dashboard,並按下左邊欄的 Organizations 之後,再選擇 Deployment Key,如下圖













並且複製 ssh-rsa key,並回去 Heroku 的 dashboard,按下左邊欄的 Account,並選擇 Manage Account,之後往下拉找到 SSH Keys 那區塊,按下右邊的 Edit,並輸入剛剛複製的 ssh key 再儲存即可,如下圖:










建立 .shippable.yml
這裡我以 Node.js 為例,以下是一個非常簡單的設定檔(在專案的 root 目錄下建立):

shippable 提供很多不同階段的入口點,讓開發者可以在不同的階段做想做的事情

例如上述範例在 npm install(before_install) 之前,會先安裝 Bower,並 install 所有的 bower dependency

最後在成功之後 (after_success) 我們做了一個最重要的步驟,就是將結果透過 git 提交到 Heroku

至於你的 Heroku 的 git 路徑你可以回到 Heroku 的 dashboard,並在中間下方部分選擇你剛剛建立的 Application

再選擇之後會顯示你目前 Application 的一些資訊和狀態,接著在上方選擇 Settings 的 tab

你就會在 Info 的區塊中找到你這麼 Application 在 Heroku 的 git url 了,如下圖:
















所以你只要把 git push 後面的 git url 換成自己的就可以了


建立 Procfile
建立 Procfile (在專案的 root 下建立),它能夠指定你的 Application 要如何在 Heroku 的平台中運行(我的範例是一個 web 的 Node.js 專案)


Building Project
最後回到 Shippable ,在右邊欄選擇你要同步的專案,按下 Enable就可以了

如同剛剛前面說的,只要有任何 commit 到 github 上,都會觸發一個 Shippable 任務去執行 build 的動作

 build 成功之後,你的 dashboard 會類似下圖



你可以點進去看這個專案 building 後的 log



當你 build 成功之後,你可以回到 Heroku,同樣進到你的 Application 頁面並選擇 Activity  tab

你會看到一些 build 和 deploy 的記錄

最後就可以透過 http://<your application name>.herokuapp.com/ 這個網址查看 deploy 後的結果了


結語
基本上 GitHub 就負責對你的專案做版本的控管,這是做一個應用程式的基礎,在這基礎上

我們透過了 Shippable 提供的功能來讓你做到應用程式的持續建構與測試,並且也能匯整出一份報告

在成功的完成這些基本的作業後,就可以將我們的應用程式自動且直接地透過 Heroku 上到 Production 了

沒有留言:

張貼留言