Continue Integration and Continue Delivery

(Provide Chinese Version only)

CICD – Blog by John Chang

Continue Integration and Continue Delivery

這個月專注於幫客戶的專案建構自動化的部屬流程。

目前部署的情況是,由開發商將source code打包好後上傳至S3 bucket,再由我們的IT人員把檔案抓下來,接著就是用command line搭配shell script進行某台機器的更新。

為了讓整個系統沒有downtime,因此我們必須將這台已經更新好的機器做成AMI,再更新launch configuration,最後更新autoscaling group裡面的設定。以上的動作全部完成後,IT人員會將autoscaling group裡面的機器批次關機,這時候autoscaling group發現機器數量不足了,就會用最新的launch configuration去產生新的機器。

整個流程看似沒太大問題,只是每次都由IT人員手動操作web console,難免麻煩了些。我們有計劃要導入AWS Codepipeline,只是要一次到位難度非常高,加上我們目前有三個環境,UAT, DEV, PROD,每個環境的設定也不太相同。

我們先用Ansible把上述人為操作的動作程式化,包括建立AMI、更新launch configuration、更新autoscaling group和更新group裡面的機器。從開始到結束,只需要下一個指令就能完成,大大的減少了人為的操作。我們計劃先在UAT環境測試,接著才是DEV以及PROD。Ansible有個好處是role是可以重用的,這也是官方推薦的使用方式。只要將變數的部分抽離出來,寫成另一個檔案,這樣不同的環境只要修改相對應的變數即可。

這樣的方式雖然不能算是一個完整的CI/CD,但我們可以在較短的時間內,把自動化的程度提高,我們就有較多的時間可以專注在Codepipeline上。

Posted in ICG Blog.